Line data Source code
1 : /*
2 : * GPAC - Multimedia Framework C SDK
3 : *
4 : * Authors: Jean Le Feuvre
5 : * Copyright (c) Telecom ParisTech 2000-2012
6 : * All rights reserved
7 : *
8 : * This file is part of GPAC / Scene Graph sub-project
9 : *
10 : * GPAC is free software; you can redistribute it and/or modify
11 : * it under the terms of the GNU Lesser General Public License as published by
12 : * the Free Software Foundation; either version 2, or (at your option)
13 : * any later version.
14 : *
15 : * GPAC is distributed in the hope that it will be useful,
16 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 : * GNU Lesser General Public License for more details.
19 : *
20 : * You should have received a copy of the GNU Lesser General Public
21 : * License along with this library; see the file COPYING. If not, write to
22 : * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
23 : *
24 : */
25 :
26 :
27 : /*
28 : DO NOT MOFIFY - File generated on GMT Tue Nov 08 09:10:57 2011
29 :
30 : BY MPEG4Gen for GPAC Version 0.5.0
31 : */
32 :
33 : #include <gpac/nodes_mpeg4.h>
34 :
35 :
36 : #include <gpac/internal/scenegraph_dev.h>
37 :
38 : #ifndef GPAC_DISABLE_VRML
39 :
40 : /*
41 : Anchor Node deletion
42 : */
43 :
44 : static void Anchor_Del(GF_Node *node)
45 : {
46 184 : M_Anchor *p = (M_Anchor *) node;
47 92 : gf_sg_sfstring_del(p->description);
48 92 : gf_sg_mfstring_del(p->parameter);
49 92 : gf_sg_mfurl_del(p->url);
50 92 : gf_sg_vrml_parent_destroy((GF_Node *) p);
51 92 : gf_node_free((GF_Node *) p);
52 92 : }
53 :
54 : static const u16 Anchor_Def2All[] = { 2, 3, 4, 5};
55 : static const u16 Anchor_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
56 : static const u16 Anchor_Out2All[] = { 2, 3, 4, 5};
57 :
58 : static u32 Anchor_get_field_count(GF_Node *node, u8 IndexMode)
59 : {
60 164 : switch(IndexMode) {
61 : case GF_SG_FIELD_CODING_IN:
62 0 : return 7;
63 : case GF_SG_FIELD_CODING_DEF:
64 47 : return 4;
65 : case GF_SG_FIELD_CODING_OUT:
66 0 : return 4;
67 : case GF_SG_FIELD_CODING_DYN:
68 0 : return 0;
69 : default:
70 35 : return 7;
71 : }
72 82 : }
73 :
74 : static GF_Err Anchor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
75 : {
76 188 : switch(IndexMode) {
77 : case GF_SG_FIELD_CODING_IN:
78 0 : *allField = Anchor_In2All[inField];
79 0 : return GF_OK;
80 : case GF_SG_FIELD_CODING_DEF:
81 94 : *allField = Anchor_Def2All[inField];
82 94 : return GF_OK;
83 : case GF_SG_FIELD_CODING_OUT:
84 0 : *allField = Anchor_Out2All[inField];
85 0 : return GF_OK;
86 : default:
87 0 : return GF_BAD_PARAM;
88 : }
89 94 : }
90 : static GF_Err Anchor_get_field(GF_Node *node, GF_FieldInfo *info)
91 : {
92 1154 : switch (info->fieldIndex) {
93 : case 0:
94 35 : info->name = "addChildren";
95 35 : info->eventType = GF_SG_EVENT_IN;
96 35 : info->on_event_in = ((M_Anchor *)node)->on_addChildren;
97 35 : info->fieldType = GF_SG_VRML_MFNODE;
98 35 : info->NDTtype = NDT_SF3DNode;
99 35 : info->far_ptr = & ((M_Anchor *)node)->addChildren;
100 35 : return GF_OK;
101 : case 1:
102 35 : info->name = "removeChildren";
103 35 : info->eventType = GF_SG_EVENT_IN;
104 35 : info->on_event_in = ((M_Anchor *)node)->on_removeChildren;
105 35 : info->fieldType = GF_SG_VRML_MFNODE;
106 35 : info->NDTtype = NDT_SF3DNode;
107 35 : info->far_ptr = & ((M_Anchor *)node)->removeChildren;
108 35 : return GF_OK;
109 : case 2:
110 121 : info->name = "children";
111 121 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
112 121 : info->fieldType = GF_SG_VRML_MFNODE;
113 121 : info->NDTtype = NDT_SF3DNode;
114 121 : info->far_ptr = & ((M_Anchor *)node)->children;
115 121 : return GF_OK;
116 : case 3:
117 92 : info->name = "description";
118 92 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
119 92 : info->fieldType = GF_SG_VRML_SFSTRING;
120 92 : info->far_ptr = & ((M_Anchor *) node)->description;
121 92 : return GF_OK;
122 : case 4:
123 92 : info->name = "parameter";
124 92 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
125 92 : info->fieldType = GF_SG_VRML_MFSTRING;
126 92 : info->far_ptr = & ((M_Anchor *) node)->parameter;
127 92 : return GF_OK;
128 : case 5:
129 167 : info->name = "url";
130 167 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
131 167 : info->fieldType = GF_SG_VRML_MFURL;
132 167 : info->far_ptr = & ((M_Anchor *) node)->url;
133 167 : return GF_OK;
134 : case 6:
135 35 : info->name = "activate";
136 35 : info->eventType = GF_SG_EVENT_IN;
137 35 : info->on_event_in = ((M_Anchor *)node)->on_activate;
138 35 : info->fieldType = GF_SG_VRML_SFBOOL;
139 35 : info->far_ptr = & ((M_Anchor *) node)->activate;
140 35 : return GF_OK;
141 : default:
142 0 : return GF_BAD_PARAM;
143 : }
144 577 : }
145 :
146 :
147 : static s32 Anchor_get_field_index_by_name(char *name)
148 : {
149 80 : if (!strcmp("addChildren", name)) return 0;
150 40 : if (!strcmp("removeChildren", name)) return 1;
151 60 : if (!strcmp("children", name)) return 2;
152 20 : if (!strcmp("description", name)) return 3;
153 20 : if (!strcmp("parameter", name)) return 4;
154 40 : if (!strcmp("url", name)) return 5;
155 0 : if (!strcmp("activate", name)) return 6;
156 0 : return -1;
157 40 : }
158 : static Bool Anchor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
159 : {
160 : switch (FieldIndex) {
161 : default:
162 0 : return 0;
163 : }
164 : }
165 :
166 :
167 :
168 : GF_Node *Anchor_Create()
169 : {
170 : M_Anchor *p;
171 276 : GF_SAFEALLOC(p, M_Anchor);
172 92 : if(!p) return NULL;
173 92 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Anchor);
174 92 : gf_sg_vrml_parent_setup((GF_Node *) p);
175 :
176 : /*default field values*/
177 92 : return (GF_Node *)p;
178 92 : }
179 :
180 :
181 : /*
182 : AnimationStream Node deletion
183 : */
184 :
185 : static void AnimationStream_Del(GF_Node *node)
186 : {
187 252 : M_AnimationStream *p = (M_AnimationStream *) node;
188 126 : gf_sg_mfurl_del(p->url);
189 126 : gf_node_free((GF_Node *) p);
190 126 : }
191 :
192 : static const u16 AnimationStream_Def2All[] = { 0, 1, 2, 3, 4};
193 : static const u16 AnimationStream_In2All[] = { 0, 1, 2, 3, 4};
194 : static const u16 AnimationStream_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
195 : static const u16 AnimationStream_Dyn2All[] = { 1};
196 :
197 : static u32 AnimationStream_get_field_count(GF_Node *node, u8 IndexMode)
198 : {
199 336 : switch(IndexMode) {
200 : case GF_SG_FIELD_CODING_IN:
201 54 : return 5;
202 : case GF_SG_FIELD_CODING_DEF:
203 56 : return 5;
204 : case GF_SG_FIELD_CODING_OUT:
205 0 : return 7;
206 : case GF_SG_FIELD_CODING_DYN:
207 0 : return 1;
208 : default:
209 58 : return 7;
210 : }
211 168 : }
212 :
213 : static GF_Err AnimationStream_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
214 : {
215 406 : switch(IndexMode) {
216 : case GF_SG_FIELD_CODING_IN:
217 78 : *allField = AnimationStream_In2All[inField];
218 78 : return GF_OK;
219 : case GF_SG_FIELD_CODING_DEF:
220 125 : *allField = AnimationStream_Def2All[inField];
221 125 : return GF_OK;
222 : case GF_SG_FIELD_CODING_OUT:
223 0 : *allField = AnimationStream_Out2All[inField];
224 0 : return GF_OK;
225 : case GF_SG_FIELD_CODING_DYN:
226 0 : *allField = AnimationStream_Dyn2All[inField];
227 0 : return GF_OK;
228 : default:
229 0 : return GF_BAD_PARAM;
230 : }
231 203 : }
232 : static GF_Err AnimationStream_get_field(GF_Node *node, GF_FieldInfo *info)
233 : {
234 2204 : switch (info->fieldIndex) {
235 : case 0:
236 172 : info->name = "loop";
237 172 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
238 172 : info->fieldType = GF_SG_VRML_SFBOOL;
239 172 : info->far_ptr = & ((M_AnimationStream *) node)->loop;
240 172 : return GF_OK;
241 : case 1:
242 142 : info->name = "speed";
243 142 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
244 142 : info->fieldType = GF_SG_VRML_SFFLOAT;
245 142 : info->far_ptr = & ((M_AnimationStream *) node)->speed;
246 142 : return GF_OK;
247 : case 2:
248 204 : info->name = "startTime";
249 204 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
250 204 : info->fieldType = GF_SG_VRML_SFTIME;
251 204 : info->far_ptr = & ((M_AnimationStream *) node)->startTime;
252 204 : return GF_OK;
253 : case 3:
254 204 : info->name = "stopTime";
255 204 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
256 204 : info->fieldType = GF_SG_VRML_SFTIME;
257 204 : info->far_ptr = & ((M_AnimationStream *) node)->stopTime;
258 204 : return GF_OK;
259 : case 4:
260 264 : info->name = "url";
261 264 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
262 264 : info->fieldType = GF_SG_VRML_MFURL;
263 264 : info->far_ptr = & ((M_AnimationStream *) node)->url;
264 264 : return GF_OK;
265 : case 5:
266 58 : info->name = "duration_changed";
267 58 : info->eventType = GF_SG_EVENT_OUT;
268 58 : info->fieldType = GF_SG_VRML_SFTIME;
269 58 : info->far_ptr = & ((M_AnimationStream *) node)->duration_changed;
270 58 : return GF_OK;
271 : case 6:
272 58 : info->name = "isActive";
273 58 : info->eventType = GF_SG_EVENT_OUT;
274 58 : info->fieldType = GF_SG_VRML_SFBOOL;
275 58 : info->far_ptr = & ((M_AnimationStream *) node)->isActive;
276 58 : return GF_OK;
277 : default:
278 0 : return GF_BAD_PARAM;
279 : }
280 1102 : }
281 :
282 :
283 : static s32 AnimationStream_get_field_index_by_name(char *name)
284 : {
285 162 : if (!strcmp("loop", name)) return 0;
286 69 : if (!strcmp("speed", name)) return 1;
287 87 : if (!strcmp("startTime", name)) return 2;
288 69 : if (!strcmp("stopTime", name)) return 3;
289 66 : if (!strcmp("url", name)) return 4;
290 0 : if (!strcmp("duration_changed", name)) return 5;
291 0 : if (!strcmp("isActive", name)) return 6;
292 0 : return -1;
293 77 : }
294 : static Bool AnimationStream_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
295 : {
296 0 : switch (FieldIndex) {
297 : case 1:
298 0 : *AType = 7;
299 0 : *QType = 0;
300 0 : *b_min = FIX_MIN;
301 0 : *b_max = FIX_MAX;
302 0 : return 1;
303 : default:
304 0 : return 0;
305 : }
306 0 : }
307 :
308 :
309 :
310 : GF_Node *AnimationStream_Create()
311 : {
312 : M_AnimationStream *p;
313 378 : GF_SAFEALLOC(p, M_AnimationStream);
314 126 : if(!p) return NULL;
315 126 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AnimationStream);
316 :
317 : /*default field values*/
318 126 : p->speed = FLT2FIX(1.0);
319 126 : p->startTime = 0;
320 126 : p->stopTime = 0;
321 126 : return (GF_Node *)p;
322 126 : }
323 :
324 :
325 : /*
326 : Appearance Node deletion
327 : */
328 :
329 : static void Appearance_Del(GF_Node *node)
330 : {
331 43316 : M_Appearance *p = (M_Appearance *) node;
332 21658 : gf_node_unregister((GF_Node *) p->material, (GF_Node *) p);
333 21658 : gf_node_unregister((GF_Node *) p->texture, (GF_Node *) p);
334 21658 : gf_node_unregister((GF_Node *) p->textureTransform, (GF_Node *) p);
335 21658 : gf_node_free((GF_Node *) p);
336 21658 : }
337 :
338 : static const u16 Appearance_Def2All[] = { 0, 1, 2};
339 : static const u16 Appearance_In2All[] = { 0, 1, 2};
340 : static const u16 Appearance_Out2All[] = { 0, 1, 2};
341 :
342 : static u32 Appearance_get_field_count(GF_Node *node, u8 IndexMode)
343 : {
344 38002 : switch(IndexMode) {
345 : case GF_SG_FIELD_CODING_IN:
346 18 : return 3;
347 : case GF_SG_FIELD_CODING_DEF:
348 7523 : return 3;
349 : case GF_SG_FIELD_CODING_OUT:
350 9 : return 3;
351 : case GF_SG_FIELD_CODING_DYN:
352 0 : return 0;
353 : default:
354 11451 : return 3;
355 : }
356 19001 : }
357 :
358 : static GF_Err Appearance_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
359 : {
360 19492 : switch(IndexMode) {
361 : case GF_SG_FIELD_CODING_IN:
362 14 : *allField = Appearance_In2All[inField];
363 14 : return GF_OK;
364 : case GF_SG_FIELD_CODING_DEF:
365 9725 : *allField = Appearance_Def2All[inField];
366 9725 : return GF_OK;
367 : case GF_SG_FIELD_CODING_OUT:
368 7 : *allField = Appearance_Out2All[inField];
369 7 : return GF_OK;
370 : default:
371 0 : return GF_BAD_PARAM;
372 : }
373 9746 : }
374 : static GF_Err Appearance_get_field(GF_Node *node, GF_FieldInfo *info)
375 : {
376 104420 : switch (info->fieldIndex) {
377 : case 0:
378 23599 : info->name = "material";
379 23599 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
380 23599 : info->fieldType = GF_SG_VRML_SFNODE;
381 23599 : info->NDTtype = NDT_SFMaterialNode;
382 23599 : info->far_ptr = & ((M_Appearance *)node)->material;
383 23599 : return GF_OK;
384 : case 1:
385 15009 : info->name = "texture";
386 15009 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
387 15009 : info->fieldType = GF_SG_VRML_SFNODE;
388 15009 : info->NDTtype = NDT_SFTextureNode;
389 15009 : info->far_ptr = & ((M_Appearance *)node)->texture;
390 15009 : return GF_OK;
391 : case 2:
392 13602 : info->name = "textureTransform";
393 13602 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
394 13602 : info->fieldType = GF_SG_VRML_SFNODE;
395 13602 : info->NDTtype = NDT_SFTextureTransformNode;
396 13602 : info->far_ptr = & ((M_Appearance *)node)->textureTransform;
397 13602 : return GF_OK;
398 : default:
399 0 : return GF_BAD_PARAM;
400 : }
401 52210 : }
402 :
403 :
404 : static s32 Appearance_get_field_index_by_name(char *name)
405 : {
406 9338 : if (!strcmp("material", name)) return 0;
407 1200 : if (!strcmp("texture", name)) return 1;
408 210 : if (!strcmp("textureTransform", name)) return 2;
409 58 : return -1;
410 3335 : }
411 : static Bool Appearance_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
412 : {
413 : switch (FieldIndex) {
414 : default:
415 0 : return 0;
416 : }
417 : }
418 :
419 :
420 :
421 : GF_Node *Appearance_Create()
422 : {
423 : M_Appearance *p;
424 64974 : GF_SAFEALLOC(p, M_Appearance);
425 21658 : if(!p) return NULL;
426 21658 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Appearance);
427 :
428 : /*default field values*/
429 21658 : return (GF_Node *)p;
430 21658 : }
431 :
432 :
433 : /*
434 : AudioBuffer Node deletion
435 : */
436 :
437 : static void AudioBuffer_Del(GF_Node *node)
438 : {
439 36 : M_AudioBuffer *p = (M_AudioBuffer *) node;
440 18 : gf_node_unregister_children((GF_Node *) p, p->children);
441 18 : gf_sg_mfint32_del(p->phaseGroup);
442 18 : gf_node_free((GF_Node *) p);
443 18 : }
444 :
445 : static const u16 AudioBuffer_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
446 : static const u16 AudioBuffer_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
447 : static const u16 AudioBuffer_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
448 : static const u16 AudioBuffer_Dyn2All[] = { 1};
449 :
450 : static u32 AudioBuffer_get_field_count(GF_Node *node, u8 IndexMode)
451 : {
452 122 : switch(IndexMode) {
453 : case GF_SG_FIELD_CODING_IN:
454 45 : return 8;
455 : case GF_SG_FIELD_CODING_DEF:
456 9 : return 8;
457 : case GF_SG_FIELD_CODING_OUT:
458 0 : return 10;
459 : case GF_SG_FIELD_CODING_DYN:
460 0 : return 1;
461 : default:
462 7 : return 10;
463 : }
464 61 : }
465 :
466 : static GF_Err AudioBuffer_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
467 : {
468 174 : switch(IndexMode) {
469 : case GF_SG_FIELD_CODING_IN:
470 51 : *allField = AudioBuffer_In2All[inField];
471 51 : return GF_OK;
472 : case GF_SG_FIELD_CODING_DEF:
473 36 : *allField = AudioBuffer_Def2All[inField];
474 36 : return GF_OK;
475 : case GF_SG_FIELD_CODING_OUT:
476 0 : *allField = AudioBuffer_Out2All[inField];
477 0 : return GF_OK;
478 : case GF_SG_FIELD_CODING_DYN:
479 0 : *allField = AudioBuffer_Dyn2All[inField];
480 0 : return GF_OK;
481 : default:
482 0 : return GF_BAD_PARAM;
483 : }
484 87 : }
485 : static GF_Err AudioBuffer_get_field(GF_Node *node, GF_FieldInfo *info)
486 : {
487 568 : switch (info->fieldIndex) {
488 : case 0:
489 33 : info->name = "loop";
490 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
491 33 : info->fieldType = GF_SG_VRML_SFBOOL;
492 33 : info->far_ptr = & ((M_AudioBuffer *) node)->loop;
493 33 : return GF_OK;
494 : case 1:
495 63 : info->name = "pitch";
496 63 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
497 63 : info->fieldType = GF_SG_VRML_SFFLOAT;
498 63 : info->far_ptr = & ((M_AudioBuffer *) node)->pitch;
499 63 : return GF_OK;
500 : case 2:
501 33 : info->name = "startTime";
502 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
503 33 : info->fieldType = GF_SG_VRML_SFTIME;
504 33 : info->far_ptr = & ((M_AudioBuffer *) node)->startTime;
505 33 : return GF_OK;
506 : case 3:
507 33 : info->name = "stopTime";
508 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
509 33 : info->fieldType = GF_SG_VRML_SFTIME;
510 33 : info->far_ptr = & ((M_AudioBuffer *) node)->stopTime;
511 33 : return GF_OK;
512 : case 4:
513 24 : info->name = "children";
514 24 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
515 24 : info->fieldType = GF_SG_VRML_MFNODE;
516 24 : info->NDTtype = NDT_SFAudioNode;
517 24 : info->far_ptr = & ((M_AudioBuffer *)node)->children;
518 24 : return GF_OK;
519 : case 5:
520 33 : info->name = "numChan";
521 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
522 33 : info->fieldType = GF_SG_VRML_SFINT32;
523 33 : info->far_ptr = & ((M_AudioBuffer *) node)->numChan;
524 33 : return GF_OK;
525 : case 6:
526 18 : info->name = "phaseGroup";
527 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
528 18 : info->fieldType = GF_SG_VRML_MFINT32;
529 18 : info->far_ptr = & ((M_AudioBuffer *) node)->phaseGroup;
530 18 : return GF_OK;
531 : case 7:
532 33 : info->name = "length";
533 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
534 33 : info->fieldType = GF_SG_VRML_SFFLOAT;
535 33 : info->far_ptr = & ((M_AudioBuffer *) node)->length;
536 33 : return GF_OK;
537 : case 8:
538 7 : info->name = "duration_changed";
539 7 : info->eventType = GF_SG_EVENT_OUT;
540 7 : info->fieldType = GF_SG_VRML_SFTIME;
541 7 : info->far_ptr = & ((M_AudioBuffer *) node)->duration_changed;
542 7 : return GF_OK;
543 : case 9:
544 7 : info->name = "isActive";
545 7 : info->eventType = GF_SG_EVENT_OUT;
546 7 : info->fieldType = GF_SG_VRML_SFBOOL;
547 7 : info->far_ptr = & ((M_AudioBuffer *) node)->isActive;
548 7 : return GF_OK;
549 : default:
550 0 : return GF_BAD_PARAM;
551 : }
552 284 : }
553 :
554 :
555 : static s32 AudioBuffer_get_field_index_by_name(char *name)
556 : {
557 76 : if (!strcmp("loop", name)) return 0;
558 44 : if (!strcmp("pitch", name)) return 1;
559 24 : if (!strcmp("startTime", name)) return 2;
560 20 : if (!strcmp("stopTime", name)) return 3;
561 16 : if (!strcmp("children", name)) return 4;
562 12 : if (!strcmp("numChan", name)) return 5;
563 4 : if (!strcmp("phaseGroup", name)) return 6;
564 8 : if (!strcmp("length", name)) return 7;
565 0 : if (!strcmp("duration_changed", name)) return 8;
566 0 : if (!strcmp("isActive", name)) return 9;
567 0 : return -1;
568 36 : }
569 : static Bool AudioBuffer_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
570 : {
571 0 : switch (FieldIndex) {
572 : case 1:
573 0 : *AType = 7;
574 0 : *QType = 0;
575 0 : *b_min = FLT2FIX(0);
576 0 : *b_max = FIX_MAX;
577 0 : return 1;
578 : case 2:
579 0 : *AType = 0;
580 0 : *QType = 0;
581 0 : *b_min = FLT2FIX(0);
582 0 : *b_max = FIX_MAX;
583 0 : return 1;
584 : case 3:
585 0 : *AType = 0;
586 0 : *QType = 0;
587 0 : *b_min = FLT2FIX(0);
588 0 : *b_max = FIX_MAX;
589 0 : return 1;
590 : case 5:
591 0 : *AType = 0;
592 0 : *QType = 13;
593 0 : *QT13_bits = 8;
594 0 : *b_min = FLT2FIX(0);
595 0 : *b_max = FLT2FIX(255);
596 0 : return 1;
597 : case 7:
598 0 : *AType = 0;
599 0 : *QType = 0;
600 0 : *b_min = FLT2FIX(0);
601 0 : *b_max = FIX_MAX;
602 0 : return 1;
603 : default:
604 0 : return 0;
605 : }
606 0 : }
607 :
608 :
609 :
610 : GF_Node *AudioBuffer_Create()
611 : {
612 : M_AudioBuffer *p;
613 54 : GF_SAFEALLOC(p, M_AudioBuffer);
614 18 : if(!p) return NULL;
615 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioBuffer);
616 :
617 : /*default field values*/
618 18 : p->pitch = FLT2FIX(1);
619 18 : p->startTime = 0;
620 18 : p->stopTime = 0;
621 18 : p->numChan = 1;
622 18 : p->phaseGroup.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
623 18 : p->phaseGroup.count = 1;
624 18 : p->phaseGroup.vals[0] = 1;
625 18 : p->length = FLT2FIX(0.0);
626 18 : return (GF_Node *)p;
627 18 : }
628 :
629 :
630 : /*
631 : AudioClip Node deletion
632 : */
633 :
634 : static void AudioClip_Del(GF_Node *node)
635 : {
636 180 : M_AudioClip *p = (M_AudioClip *) node;
637 90 : gf_sg_sfstring_del(p->description);
638 90 : gf_sg_mfurl_del(p->url);
639 90 : gf_node_free((GF_Node *) p);
640 90 : }
641 :
642 : static const u16 AudioClip_Def2All[] = { 0, 1, 2, 3, 4, 5};
643 : static const u16 AudioClip_In2All[] = { 0, 1, 2, 3, 4, 5};
644 : static const u16 AudioClip_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
645 : static const u16 AudioClip_Dyn2All[] = { 2};
646 :
647 : static u32 AudioClip_get_field_count(GF_Node *node, u8 IndexMode)
648 : {
649 232 : switch(IndexMode) {
650 : case GF_SG_FIELD_CODING_IN:
651 36 : return 6;
652 : case GF_SG_FIELD_CODING_DEF:
653 45 : return 6;
654 : case GF_SG_FIELD_CODING_OUT:
655 0 : return 8;
656 : case GF_SG_FIELD_CODING_DYN:
657 0 : return 1;
658 : default:
659 35 : return 8;
660 : }
661 116 : }
662 :
663 : static GF_Err AudioClip_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
664 : {
665 344 : switch(IndexMode) {
666 : case GF_SG_FIELD_CODING_IN:
667 62 : *allField = AudioClip_In2All[inField];
668 62 : return GF_OK;
669 : case GF_SG_FIELD_CODING_DEF:
670 110 : *allField = AudioClip_Def2All[inField];
671 110 : return GF_OK;
672 : case GF_SG_FIELD_CODING_OUT:
673 0 : *allField = AudioClip_Out2All[inField];
674 0 : return GF_OK;
675 : case GF_SG_FIELD_CODING_DYN:
676 0 : *allField = AudioClip_Dyn2All[inField];
677 0 : return GF_OK;
678 : default:
679 0 : return GF_BAD_PARAM;
680 : }
681 172 : }
682 : static GF_Err AudioClip_get_field(GF_Node *node, GF_FieldInfo *info)
683 : {
684 1640 : switch (info->fieldIndex) {
685 : case 0:
686 90 : info->name = "description";
687 90 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
688 90 : info->fieldType = GF_SG_VRML_SFSTRING;
689 90 : info->far_ptr = & ((M_AudioClip *) node)->description;
690 90 : return GF_OK;
691 : case 1:
692 165 : info->name = "loop";
693 165 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
694 165 : info->fieldType = GF_SG_VRML_SFBOOL;
695 165 : info->far_ptr = & ((M_AudioClip *) node)->loop;
696 165 : return GF_OK;
697 : case 2:
698 90 : info->name = "pitch";
699 90 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
700 90 : info->fieldType = GF_SG_VRML_SFFLOAT;
701 90 : info->far_ptr = & ((M_AudioClip *) node)->pitch;
702 90 : return GF_OK;
703 : case 3:
704 105 : info->name = "startTime";
705 105 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
706 105 : info->fieldType = GF_SG_VRML_SFTIME;
707 105 : info->far_ptr = & ((M_AudioClip *) node)->startTime;
708 105 : return GF_OK;
709 : case 4:
710 105 : info->name = "stopTime";
711 105 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
712 105 : info->fieldType = GF_SG_VRML_SFTIME;
713 105 : info->far_ptr = & ((M_AudioClip *) node)->stopTime;
714 105 : return GF_OK;
715 : case 5:
716 195 : info->name = "url";
717 195 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
718 195 : info->fieldType = GF_SG_VRML_MFURL;
719 195 : info->far_ptr = & ((M_AudioClip *) node)->url;
720 195 : return GF_OK;
721 : case 6:
722 35 : info->name = "duration_changed";
723 35 : info->eventType = GF_SG_EVENT_OUT;
724 35 : info->fieldType = GF_SG_VRML_SFTIME;
725 35 : info->far_ptr = & ((M_AudioClip *) node)->duration_changed;
726 35 : return GF_OK;
727 : case 7:
728 35 : info->name = "isActive";
729 35 : info->eventType = GF_SG_EVENT_OUT;
730 35 : info->fieldType = GF_SG_VRML_SFBOOL;
731 35 : info->far_ptr = & ((M_AudioClip *) node)->isActive;
732 35 : return GF_OK;
733 : default:
734 0 : return GF_BAD_PARAM;
735 : }
736 820 : }
737 :
738 :
739 : static s32 AudioClip_get_field_index_by_name(char *name)
740 : {
741 112 : if (!strcmp("description", name)) return 0;
742 76 : if (!strcmp("loop", name)) return 1;
743 36 : if (!strcmp("pitch", name)) return 2;
744 40 : if (!strcmp("startTime", name)) return 3;
745 36 : if (!strcmp("stopTime", name)) return 4;
746 56 : if (!strcmp("url", name)) return 5;
747 0 : if (!strcmp("duration_changed", name)) return 6;
748 0 : if (!strcmp("isActive", name)) return 7;
749 0 : return -1;
750 56 : }
751 : static Bool AudioClip_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
752 : {
753 0 : switch (FieldIndex) {
754 : case 2:
755 0 : *AType = 7;
756 0 : *QType = 0;
757 0 : *b_min = FLT2FIX(0);
758 0 : *b_max = FIX_MAX;
759 0 : return 1;
760 : default:
761 0 : return 0;
762 : }
763 0 : }
764 :
765 :
766 :
767 : GF_Node *AudioClip_Create()
768 : {
769 : M_AudioClip *p;
770 270 : GF_SAFEALLOC(p, M_AudioClip);
771 90 : if(!p) return NULL;
772 90 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioClip);
773 :
774 : /*default field values*/
775 90 : p->pitch = FLT2FIX(1.0);
776 90 : p->startTime = 0;
777 90 : p->stopTime = 0;
778 90 : return (GF_Node *)p;
779 90 : }
780 :
781 :
782 : /*
783 : AudioDelay Node deletion
784 : */
785 :
786 : static void AudioDelay_Del(GF_Node *node)
787 : {
788 0 : M_AudioDelay *p = (M_AudioDelay *) node;
789 0 : gf_sg_mfint32_del(p->phaseGroup);
790 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
791 0 : gf_node_free((GF_Node *) p);
792 0 : }
793 :
794 : static const u16 AudioDelay_Def2All[] = { 2, 3, 4, 5};
795 : static const u16 AudioDelay_In2All[] = { 0, 1, 2, 3};
796 : static const u16 AudioDelay_Out2All[] = { 2, 3};
797 :
798 : static u32 AudioDelay_get_field_count(GF_Node *node, u8 IndexMode)
799 : {
800 0 : switch(IndexMode) {
801 : case GF_SG_FIELD_CODING_IN:
802 0 : return 4;
803 : case GF_SG_FIELD_CODING_DEF:
804 0 : return 4;
805 : case GF_SG_FIELD_CODING_OUT:
806 0 : return 2;
807 : case GF_SG_FIELD_CODING_DYN:
808 0 : return 0;
809 : default:
810 0 : return 6;
811 : }
812 0 : }
813 :
814 : static GF_Err AudioDelay_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
815 : {
816 0 : switch(IndexMode) {
817 : case GF_SG_FIELD_CODING_IN:
818 0 : *allField = AudioDelay_In2All[inField];
819 0 : return GF_OK;
820 : case GF_SG_FIELD_CODING_DEF:
821 0 : *allField = AudioDelay_Def2All[inField];
822 0 : return GF_OK;
823 : case GF_SG_FIELD_CODING_OUT:
824 0 : *allField = AudioDelay_Out2All[inField];
825 0 : return GF_OK;
826 : default:
827 0 : return GF_BAD_PARAM;
828 : }
829 0 : }
830 : static GF_Err AudioDelay_get_field(GF_Node *node, GF_FieldInfo *info)
831 : {
832 0 : switch (info->fieldIndex) {
833 : case 0:
834 0 : info->name = "addChildren";
835 0 : info->eventType = GF_SG_EVENT_IN;
836 0 : info->on_event_in = ((M_AudioDelay *)node)->on_addChildren;
837 0 : info->fieldType = GF_SG_VRML_MFNODE;
838 0 : info->NDTtype = NDT_SFAudioNode;
839 0 : info->far_ptr = & ((M_AudioDelay *)node)->addChildren;
840 0 : return GF_OK;
841 : case 1:
842 0 : info->name = "removeChildren";
843 0 : info->eventType = GF_SG_EVENT_IN;
844 0 : info->on_event_in = ((M_AudioDelay *)node)->on_removeChildren;
845 0 : info->fieldType = GF_SG_VRML_MFNODE;
846 0 : info->NDTtype = NDT_SFAudioNode;
847 0 : info->far_ptr = & ((M_AudioDelay *)node)->removeChildren;
848 0 : return GF_OK;
849 : case 2:
850 0 : info->name = "children";
851 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
852 0 : info->fieldType = GF_SG_VRML_MFNODE;
853 0 : info->NDTtype = NDT_SFAudioNode;
854 0 : info->far_ptr = & ((M_AudioDelay *)node)->children;
855 0 : return GF_OK;
856 : case 3:
857 0 : info->name = "delay";
858 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
859 0 : info->fieldType = GF_SG_VRML_SFTIME;
860 0 : info->far_ptr = & ((M_AudioDelay *) node)->delay;
861 0 : return GF_OK;
862 : case 4:
863 0 : info->name = "numChan";
864 0 : info->eventType = GF_SG_EVENT_FIELD;
865 0 : info->fieldType = GF_SG_VRML_SFINT32;
866 0 : info->far_ptr = & ((M_AudioDelay *) node)->numChan;
867 0 : return GF_OK;
868 : case 5:
869 0 : info->name = "phaseGroup";
870 0 : info->eventType = GF_SG_EVENT_FIELD;
871 0 : info->fieldType = GF_SG_VRML_MFINT32;
872 0 : info->far_ptr = & ((M_AudioDelay *) node)->phaseGroup;
873 0 : return GF_OK;
874 : default:
875 0 : return GF_BAD_PARAM;
876 : }
877 0 : }
878 :
879 :
880 : static s32 AudioDelay_get_field_index_by_name(char *name)
881 : {
882 0 : if (!strcmp("addChildren", name)) return 0;
883 0 : if (!strcmp("removeChildren", name)) return 1;
884 0 : if (!strcmp("children", name)) return 2;
885 0 : if (!strcmp("delay", name)) return 3;
886 0 : if (!strcmp("numChan", name)) return 4;
887 0 : if (!strcmp("phaseGroup", name)) return 5;
888 0 : return -1;
889 0 : }
890 : static Bool AudioDelay_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
891 : {
892 0 : switch (FieldIndex) {
893 : case 4:
894 0 : *AType = 0;
895 0 : *QType = 13;
896 0 : *QT13_bits = 8;
897 0 : *b_min = FLT2FIX(0);
898 0 : *b_max = FLT2FIX(255);
899 0 : return 1;
900 : case 5:
901 0 : *AType = 0;
902 0 : *QType = 13;
903 0 : *QT13_bits = 8;
904 0 : *b_min = FLT2FIX(0);
905 0 : *b_max = FLT2FIX(255);
906 0 : return 1;
907 : default:
908 0 : return 0;
909 : }
910 0 : }
911 :
912 :
913 :
914 : GF_Node *AudioDelay_Create()
915 : {
916 : M_AudioDelay *p;
917 0 : GF_SAFEALLOC(p, M_AudioDelay);
918 0 : if(!p) return NULL;
919 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioDelay);
920 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
921 :
922 : /*default field values*/
923 0 : p->delay = 0;
924 0 : p->numChan = 1;
925 0 : return (GF_Node *)p;
926 0 : }
927 :
928 :
929 : /*
930 : AudioFX Node deletion
931 : */
932 :
933 : static void AudioFX_Del(GF_Node *node)
934 : {
935 0 : M_AudioFX *p = (M_AudioFX *) node;
936 0 : gf_sg_sfstring_del(p->orch);
937 0 : gf_sg_sfstring_del(p->score);
938 0 : gf_sg_mffloat_del(p->params);
939 0 : gf_sg_mfint32_del(p->phaseGroup);
940 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
941 0 : gf_node_free((GF_Node *) p);
942 0 : }
943 :
944 : static const u16 AudioFX_Def2All[] = { 2, 3, 4, 5, 6, 7};
945 : static const u16 AudioFX_In2All[] = { 0, 1, 2, 3, 4, 5};
946 : static const u16 AudioFX_Out2All[] = { 2, 3, 4, 5};
947 : static const u16 AudioFX_Dyn2All[] = { 5};
948 :
949 : static u32 AudioFX_get_field_count(GF_Node *node, u8 IndexMode)
950 : {
951 0 : switch(IndexMode) {
952 : case GF_SG_FIELD_CODING_IN:
953 0 : return 6;
954 : case GF_SG_FIELD_CODING_DEF:
955 0 : return 6;
956 : case GF_SG_FIELD_CODING_OUT:
957 0 : return 4;
958 : case GF_SG_FIELD_CODING_DYN:
959 0 : return 1;
960 : default:
961 0 : return 8;
962 : }
963 0 : }
964 :
965 : static GF_Err AudioFX_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
966 : {
967 0 : switch(IndexMode) {
968 : case GF_SG_FIELD_CODING_IN:
969 0 : *allField = AudioFX_In2All[inField];
970 0 : return GF_OK;
971 : case GF_SG_FIELD_CODING_DEF:
972 0 : *allField = AudioFX_Def2All[inField];
973 0 : return GF_OK;
974 : case GF_SG_FIELD_CODING_OUT:
975 0 : *allField = AudioFX_Out2All[inField];
976 0 : return GF_OK;
977 : case GF_SG_FIELD_CODING_DYN:
978 0 : *allField = AudioFX_Dyn2All[inField];
979 0 : return GF_OK;
980 : default:
981 0 : return GF_BAD_PARAM;
982 : }
983 0 : }
984 : static GF_Err AudioFX_get_field(GF_Node *node, GF_FieldInfo *info)
985 : {
986 0 : switch (info->fieldIndex) {
987 : case 0:
988 0 : info->name = "addChildren";
989 0 : info->eventType = GF_SG_EVENT_IN;
990 0 : info->on_event_in = ((M_AudioFX *)node)->on_addChildren;
991 0 : info->fieldType = GF_SG_VRML_MFNODE;
992 0 : info->NDTtype = NDT_SFAudioNode;
993 0 : info->far_ptr = & ((M_AudioFX *)node)->addChildren;
994 0 : return GF_OK;
995 : case 1:
996 0 : info->name = "removeChildren";
997 0 : info->eventType = GF_SG_EVENT_IN;
998 0 : info->on_event_in = ((M_AudioFX *)node)->on_removeChildren;
999 0 : info->fieldType = GF_SG_VRML_MFNODE;
1000 0 : info->NDTtype = NDT_SFAudioNode;
1001 0 : info->far_ptr = & ((M_AudioFX *)node)->removeChildren;
1002 0 : return GF_OK;
1003 : case 2:
1004 0 : info->name = "children";
1005 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1006 0 : info->fieldType = GF_SG_VRML_MFNODE;
1007 0 : info->NDTtype = NDT_SFAudioNode;
1008 0 : info->far_ptr = & ((M_AudioFX *)node)->children;
1009 0 : return GF_OK;
1010 : case 3:
1011 0 : info->name = "orch";
1012 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1013 0 : info->fieldType = GF_SG_VRML_SFSTRING;
1014 0 : info->far_ptr = & ((M_AudioFX *) node)->orch;
1015 0 : return GF_OK;
1016 : case 4:
1017 0 : info->name = "score";
1018 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1019 0 : info->fieldType = GF_SG_VRML_SFSTRING;
1020 0 : info->far_ptr = & ((M_AudioFX *) node)->score;
1021 0 : return GF_OK;
1022 : case 5:
1023 0 : info->name = "params";
1024 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1025 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
1026 0 : info->far_ptr = & ((M_AudioFX *) node)->params;
1027 0 : return GF_OK;
1028 : case 6:
1029 0 : info->name = "numChan";
1030 0 : info->eventType = GF_SG_EVENT_FIELD;
1031 0 : info->fieldType = GF_SG_VRML_SFINT32;
1032 0 : info->far_ptr = & ((M_AudioFX *) node)->numChan;
1033 0 : return GF_OK;
1034 : case 7:
1035 0 : info->name = "phaseGroup";
1036 0 : info->eventType = GF_SG_EVENT_FIELD;
1037 0 : info->fieldType = GF_SG_VRML_MFINT32;
1038 0 : info->far_ptr = & ((M_AudioFX *) node)->phaseGroup;
1039 0 : return GF_OK;
1040 : default:
1041 0 : return GF_BAD_PARAM;
1042 : }
1043 0 : }
1044 :
1045 :
1046 : static s32 AudioFX_get_field_index_by_name(char *name)
1047 : {
1048 0 : if (!strcmp("addChildren", name)) return 0;
1049 0 : if (!strcmp("removeChildren", name)) return 1;
1050 0 : if (!strcmp("children", name)) return 2;
1051 0 : if (!strcmp("orch", name)) return 3;
1052 0 : if (!strcmp("score", name)) return 4;
1053 0 : if (!strcmp("params", name)) return 5;
1054 0 : if (!strcmp("numChan", name)) return 6;
1055 0 : if (!strcmp("phaseGroup", name)) return 7;
1056 0 : return -1;
1057 0 : }
1058 : static Bool AudioFX_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
1059 : {
1060 0 : switch (FieldIndex) {
1061 : case 5:
1062 0 : *AType = 7;
1063 0 : *QType = 0;
1064 0 : *b_min = FIX_MIN;
1065 0 : *b_max = FIX_MAX;
1066 0 : return 1;
1067 : case 6:
1068 0 : *AType = 0;
1069 0 : *QType = 13;
1070 0 : *QT13_bits = 8;
1071 0 : *b_min = FLT2FIX(0);
1072 0 : *b_max = FLT2FIX(255);
1073 0 : return 1;
1074 : case 7:
1075 0 : *AType = 0;
1076 0 : *QType = 13;
1077 0 : *QT13_bits = 8;
1078 0 : *b_min = FLT2FIX(0);
1079 0 : *b_max = FLT2FIX(255);
1080 0 : return 1;
1081 : default:
1082 0 : return 0;
1083 : }
1084 0 : }
1085 :
1086 :
1087 :
1088 : GF_Node *AudioFX_Create()
1089 : {
1090 : M_AudioFX *p;
1091 0 : GF_SAFEALLOC(p, M_AudioFX);
1092 0 : if(!p) return NULL;
1093 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioFX);
1094 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
1095 :
1096 : /*default field values*/
1097 0 : p->numChan = 1;
1098 0 : return (GF_Node *)p;
1099 0 : }
1100 :
1101 :
1102 : /*
1103 : AudioMix Node deletion
1104 : */
1105 :
1106 : static void AudioMix_Del(GF_Node *node)
1107 : {
1108 0 : M_AudioMix *p = (M_AudioMix *) node;
1109 0 : gf_sg_mffloat_del(p->matrix);
1110 0 : gf_sg_mfint32_del(p->phaseGroup);
1111 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
1112 0 : gf_node_free((GF_Node *) p);
1113 0 : }
1114 :
1115 : static const u16 AudioMix_Def2All[] = { 2, 3, 4, 5, 6};
1116 : static const u16 AudioMix_In2All[] = { 0, 1, 2, 3, 4};
1117 : static const u16 AudioMix_Out2All[] = { 2, 3, 4};
1118 : static const u16 AudioMix_Dyn2All[] = { 4};
1119 :
1120 : static u32 AudioMix_get_field_count(GF_Node *node, u8 IndexMode)
1121 : {
1122 0 : switch(IndexMode) {
1123 : case GF_SG_FIELD_CODING_IN:
1124 0 : return 5;
1125 : case GF_SG_FIELD_CODING_DEF:
1126 0 : return 5;
1127 : case GF_SG_FIELD_CODING_OUT:
1128 0 : return 3;
1129 : case GF_SG_FIELD_CODING_DYN:
1130 0 : return 1;
1131 : default:
1132 0 : return 7;
1133 : }
1134 0 : }
1135 :
1136 : static GF_Err AudioMix_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
1137 : {
1138 0 : switch(IndexMode) {
1139 : case GF_SG_FIELD_CODING_IN:
1140 0 : *allField = AudioMix_In2All[inField];
1141 0 : return GF_OK;
1142 : case GF_SG_FIELD_CODING_DEF:
1143 0 : *allField = AudioMix_Def2All[inField];
1144 0 : return GF_OK;
1145 : case GF_SG_FIELD_CODING_OUT:
1146 0 : *allField = AudioMix_Out2All[inField];
1147 0 : return GF_OK;
1148 : case GF_SG_FIELD_CODING_DYN:
1149 0 : *allField = AudioMix_Dyn2All[inField];
1150 0 : return GF_OK;
1151 : default:
1152 0 : return GF_BAD_PARAM;
1153 : }
1154 0 : }
1155 : static GF_Err AudioMix_get_field(GF_Node *node, GF_FieldInfo *info)
1156 : {
1157 0 : switch (info->fieldIndex) {
1158 : case 0:
1159 0 : info->name = "addChildren";
1160 0 : info->eventType = GF_SG_EVENT_IN;
1161 0 : info->on_event_in = ((M_AudioMix *)node)->on_addChildren;
1162 0 : info->fieldType = GF_SG_VRML_MFNODE;
1163 0 : info->NDTtype = NDT_SFAudioNode;
1164 0 : info->far_ptr = & ((M_AudioMix *)node)->addChildren;
1165 0 : return GF_OK;
1166 : case 1:
1167 0 : info->name = "removeChildren";
1168 0 : info->eventType = GF_SG_EVENT_IN;
1169 0 : info->on_event_in = ((M_AudioMix *)node)->on_removeChildren;
1170 0 : info->fieldType = GF_SG_VRML_MFNODE;
1171 0 : info->NDTtype = NDT_SFAudioNode;
1172 0 : info->far_ptr = & ((M_AudioMix *)node)->removeChildren;
1173 0 : return GF_OK;
1174 : case 2:
1175 0 : info->name = "children";
1176 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1177 0 : info->fieldType = GF_SG_VRML_MFNODE;
1178 0 : info->NDTtype = NDT_SFAudioNode;
1179 0 : info->far_ptr = & ((M_AudioMix *)node)->children;
1180 0 : return GF_OK;
1181 : case 3:
1182 0 : info->name = "numInputs";
1183 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1184 0 : info->fieldType = GF_SG_VRML_SFINT32;
1185 0 : info->far_ptr = & ((M_AudioMix *) node)->numInputs;
1186 0 : return GF_OK;
1187 : case 4:
1188 0 : info->name = "matrix";
1189 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1190 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
1191 0 : info->far_ptr = & ((M_AudioMix *) node)->matrix;
1192 0 : return GF_OK;
1193 : case 5:
1194 0 : info->name = "numChan";
1195 0 : info->eventType = GF_SG_EVENT_FIELD;
1196 0 : info->fieldType = GF_SG_VRML_SFINT32;
1197 0 : info->far_ptr = & ((M_AudioMix *) node)->numChan;
1198 0 : return GF_OK;
1199 : case 6:
1200 0 : info->name = "phaseGroup";
1201 0 : info->eventType = GF_SG_EVENT_FIELD;
1202 0 : info->fieldType = GF_SG_VRML_MFINT32;
1203 0 : info->far_ptr = & ((M_AudioMix *) node)->phaseGroup;
1204 0 : return GF_OK;
1205 : default:
1206 0 : return GF_BAD_PARAM;
1207 : }
1208 0 : }
1209 :
1210 :
1211 : static s32 AudioMix_get_field_index_by_name(char *name)
1212 : {
1213 0 : if (!strcmp("addChildren", name)) return 0;
1214 0 : if (!strcmp("removeChildren", name)) return 1;
1215 0 : if (!strcmp("children", name)) return 2;
1216 0 : if (!strcmp("numInputs", name)) return 3;
1217 0 : if (!strcmp("matrix", name)) return 4;
1218 0 : if (!strcmp("numChan", name)) return 5;
1219 0 : if (!strcmp("phaseGroup", name)) return 6;
1220 0 : return -1;
1221 0 : }
1222 : static Bool AudioMix_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
1223 : {
1224 0 : switch (FieldIndex) {
1225 : case 3:
1226 0 : *AType = 0;
1227 0 : *QType = 13;
1228 0 : *QT13_bits = 8;
1229 0 : *b_min = FLT2FIX(1);
1230 0 : *b_max = FLT2FIX(255);
1231 0 : return 1;
1232 : case 4:
1233 0 : *AType = 7;
1234 0 : *QType = 0;
1235 0 : *b_min = FLT2FIX(0);
1236 0 : *b_max = FLT2FIX(1);
1237 0 : return 1;
1238 : case 5:
1239 0 : *AType = 0;
1240 0 : *QType = 13;
1241 0 : *QT13_bits = 8;
1242 0 : *b_min = FLT2FIX(0);
1243 0 : *b_max = FLT2FIX(255);
1244 0 : return 1;
1245 : case 6:
1246 0 : *AType = 0;
1247 0 : *QType = 13;
1248 0 : *QT13_bits = 8;
1249 0 : *b_min = FLT2FIX(0);
1250 0 : *b_max = FLT2FIX(255);
1251 0 : return 1;
1252 : default:
1253 0 : return 0;
1254 : }
1255 0 : }
1256 :
1257 :
1258 :
1259 : GF_Node *AudioMix_Create()
1260 : {
1261 : M_AudioMix *p;
1262 0 : GF_SAFEALLOC(p, M_AudioMix);
1263 0 : if(!p) return NULL;
1264 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioMix);
1265 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
1266 :
1267 : /*default field values*/
1268 0 : p->numInputs = 1;
1269 0 : p->numChan = 1;
1270 0 : return (GF_Node *)p;
1271 0 : }
1272 :
1273 :
1274 : /*
1275 : AudioSource Node deletion
1276 : */
1277 :
1278 : static void AudioSource_Del(GF_Node *node)
1279 : {
1280 250 : M_AudioSource *p = (M_AudioSource *) node;
1281 125 : gf_sg_mfurl_del(p->url);
1282 125 : gf_sg_mfint32_del(p->phaseGroup);
1283 125 : gf_sg_vrml_parent_destroy((GF_Node *) p);
1284 125 : gf_node_free((GF_Node *) p);
1285 125 : }
1286 :
1287 : static const u16 AudioSource_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9};
1288 : static const u16 AudioSource_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
1289 : static const u16 AudioSource_Out2All[] = { 2, 3, 4, 5, 6, 7};
1290 : static const u16 AudioSource_Dyn2All[] = { 4, 5};
1291 :
1292 : static u32 AudioSource_get_field_count(GF_Node *node, u8 IndexMode)
1293 : {
1294 344 : switch(IndexMode) {
1295 : case GF_SG_FIELD_CODING_IN:
1296 54 : return 8;
1297 : case GF_SG_FIELD_CODING_DEF:
1298 63 : return 8;
1299 : case GF_SG_FIELD_CODING_OUT:
1300 0 : return 6;
1301 : case GF_SG_FIELD_CODING_DYN:
1302 0 : return 2;
1303 : default:
1304 55 : return 10;
1305 : }
1306 172 : }
1307 :
1308 : static GF_Err AudioSource_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
1309 : {
1310 536 : switch(IndexMode) {
1311 : case GF_SG_FIELD_CODING_IN:
1312 104 : *allField = AudioSource_In2All[inField];
1313 104 : return GF_OK;
1314 : case GF_SG_FIELD_CODING_DEF:
1315 164 : *allField = AudioSource_Def2All[inField];
1316 164 : return GF_OK;
1317 : case GF_SG_FIELD_CODING_OUT:
1318 0 : *allField = AudioSource_Out2All[inField];
1319 0 : return GF_OK;
1320 : case GF_SG_FIELD_CODING_DYN:
1321 0 : *allField = AudioSource_Dyn2All[inField];
1322 0 : return GF_OK;
1323 : default:
1324 0 : return GF_BAD_PARAM;
1325 : }
1326 268 : }
1327 : static GF_Err AudioSource_get_field(GF_Node *node, GF_FieldInfo *info)
1328 : {
1329 2630 : switch (info->fieldIndex) {
1330 : case 0:
1331 48 : info->name = "addChildren";
1332 48 : info->eventType = GF_SG_EVENT_IN;
1333 48 : info->on_event_in = ((M_AudioSource *)node)->on_addChildren;
1334 48 : info->fieldType = GF_SG_VRML_MFNODE;
1335 48 : info->NDTtype = NDT_SFAudioNode;
1336 48 : info->far_ptr = & ((M_AudioSource *)node)->addChildren;
1337 48 : return GF_OK;
1338 : case 1:
1339 48 : info->name = "removeChildren";
1340 48 : info->eventType = GF_SG_EVENT_IN;
1341 48 : info->on_event_in = ((M_AudioSource *)node)->on_removeChildren;
1342 48 : info->fieldType = GF_SG_VRML_MFNODE;
1343 48 : info->NDTtype = NDT_SFAudioNode;
1344 48 : info->far_ptr = & ((M_AudioSource *)node)->removeChildren;
1345 48 : return GF_OK;
1346 : case 2:
1347 61 : info->name = "children";
1348 61 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1349 61 : info->fieldType = GF_SG_VRML_MFNODE;
1350 61 : info->NDTtype = NDT_SFAudioNode;
1351 61 : info->far_ptr = & ((M_AudioSource *)node)->children;
1352 61 : return GF_OK;
1353 : case 3:
1354 258 : info->name = "url";
1355 258 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1356 258 : info->fieldType = GF_SG_VRML_MFURL;
1357 258 : info->far_ptr = & ((M_AudioSource *) node)->url;
1358 258 : return GF_OK;
1359 : case 4:
1360 122 : info->name = "pitch";
1361 122 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1362 122 : info->fieldType = GF_SG_VRML_SFFLOAT;
1363 122 : info->far_ptr = & ((M_AudioSource *) node)->pitch;
1364 122 : return GF_OK;
1365 : case 5:
1366 122 : info->name = "speed";
1367 122 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1368 122 : info->fieldType = GF_SG_VRML_SFFLOAT;
1369 122 : info->far_ptr = & ((M_AudioSource *) node)->speed;
1370 122 : return GF_OK;
1371 : case 6:
1372 169 : info->name = "startTime";
1373 169 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1374 169 : info->fieldType = GF_SG_VRML_SFTIME;
1375 169 : info->far_ptr = & ((M_AudioSource *) node)->startTime;
1376 169 : return GF_OK;
1377 : case 7:
1378 214 : info->name = "stopTime";
1379 214 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1380 214 : info->fieldType = GF_SG_VRML_SFTIME;
1381 214 : info->far_ptr = & ((M_AudioSource *) node)->stopTime;
1382 214 : return GF_OK;
1383 : case 8:
1384 151 : info->name = "numChan";
1385 151 : info->eventType = GF_SG_EVENT_FIELD;
1386 151 : info->fieldType = GF_SG_VRML_SFINT32;
1387 151 : info->far_ptr = & ((M_AudioSource *) node)->numChan;
1388 151 : return GF_OK;
1389 : case 9:
1390 122 : info->name = "phaseGroup";
1391 122 : info->eventType = GF_SG_EVENT_FIELD;
1392 122 : info->fieldType = GF_SG_VRML_MFINT32;
1393 122 : info->far_ptr = & ((M_AudioSource *) node)->phaseGroup;
1394 122 : return GF_OK;
1395 : default:
1396 0 : return GF_BAD_PARAM;
1397 : }
1398 1315 : }
1399 :
1400 :
1401 : static s32 AudioSource_get_field_index_by_name(char *name)
1402 : {
1403 168 : if (!strcmp("addChildren", name)) return 0;
1404 84 : if (!strcmp("removeChildren", name)) return 1;
1405 84 : if (!strcmp("children", name)) return 2;
1406 121 : if (!strcmp("url", name)) return 3;
1407 47 : if (!strcmp("pitch", name)) return 4;
1408 47 : if (!strcmp("speed", name)) return 5;
1409 61 : if (!strcmp("startTime", name)) return 6;
1410 58 : if (!strcmp("stopTime", name)) return 7;
1411 16 : if (!strcmp("numChan", name)) return 8;
1412 0 : if (!strcmp("phaseGroup", name)) return 9;
1413 0 : return -1;
1414 84 : }
1415 : static Bool AudioSource_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
1416 : {
1417 0 : switch (FieldIndex) {
1418 : case 4:
1419 0 : *AType = 7;
1420 0 : *QType = 0;
1421 0 : *b_min = FLT2FIX(0);
1422 0 : *b_max = FIX_MAX;
1423 0 : return 1;
1424 : case 5:
1425 0 : *AType = 7;
1426 0 : *QType = 0;
1427 0 : *b_min = FLT2FIX(0);
1428 0 : *b_max = FIX_MAX;
1429 0 : return 1;
1430 : case 8:
1431 0 : *AType = 0;
1432 0 : *QType = 13;
1433 0 : *QT13_bits = 8;
1434 0 : *b_min = FLT2FIX(0);
1435 0 : *b_max = FLT2FIX(255);
1436 0 : return 1;
1437 : case 9:
1438 0 : *AType = 0;
1439 0 : *QType = 13;
1440 0 : *QT13_bits = 8;
1441 0 : *b_min = FLT2FIX(0);
1442 0 : *b_max = FLT2FIX(255);
1443 0 : return 1;
1444 : default:
1445 0 : return 0;
1446 : }
1447 0 : }
1448 :
1449 :
1450 :
1451 : GF_Node *AudioSource_Create()
1452 : {
1453 : M_AudioSource *p;
1454 375 : GF_SAFEALLOC(p, M_AudioSource);
1455 125 : if(!p) return NULL;
1456 125 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioSource);
1457 125 : gf_sg_vrml_parent_setup((GF_Node *) p);
1458 :
1459 : /*default field values*/
1460 125 : p->pitch = FLT2FIX(1);
1461 125 : p->speed = FLT2FIX(1);
1462 125 : p->startTime = 0;
1463 125 : p->stopTime = 0;
1464 125 : p->numChan = 1;
1465 125 : return (GF_Node *)p;
1466 125 : }
1467 :
1468 :
1469 : /*
1470 : AudioSwitch Node deletion
1471 : */
1472 :
1473 : static void AudioSwitch_Del(GF_Node *node)
1474 : {
1475 0 : M_AudioSwitch *p = (M_AudioSwitch *) node;
1476 0 : gf_sg_mfint32_del(p->whichChoice);
1477 0 : gf_sg_mfint32_del(p->phaseGroup);
1478 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
1479 0 : gf_node_free((GF_Node *) p);
1480 0 : }
1481 :
1482 : static const u16 AudioSwitch_Def2All[] = { 2, 3, 4, 5};
1483 : static const u16 AudioSwitch_In2All[] = { 0, 1, 2, 3};
1484 : static const u16 AudioSwitch_Out2All[] = { 2, 3};
1485 :
1486 : static u32 AudioSwitch_get_field_count(GF_Node *node, u8 IndexMode)
1487 : {
1488 0 : switch(IndexMode) {
1489 : case GF_SG_FIELD_CODING_IN:
1490 0 : return 4;
1491 : case GF_SG_FIELD_CODING_DEF:
1492 0 : return 4;
1493 : case GF_SG_FIELD_CODING_OUT:
1494 0 : return 2;
1495 : case GF_SG_FIELD_CODING_DYN:
1496 0 : return 0;
1497 : default:
1498 0 : return 6;
1499 : }
1500 0 : }
1501 :
1502 : static GF_Err AudioSwitch_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
1503 : {
1504 0 : switch(IndexMode) {
1505 : case GF_SG_FIELD_CODING_IN:
1506 0 : *allField = AudioSwitch_In2All[inField];
1507 0 : return GF_OK;
1508 : case GF_SG_FIELD_CODING_DEF:
1509 0 : *allField = AudioSwitch_Def2All[inField];
1510 0 : return GF_OK;
1511 : case GF_SG_FIELD_CODING_OUT:
1512 0 : *allField = AudioSwitch_Out2All[inField];
1513 0 : return GF_OK;
1514 : default:
1515 0 : return GF_BAD_PARAM;
1516 : }
1517 0 : }
1518 : static GF_Err AudioSwitch_get_field(GF_Node *node, GF_FieldInfo *info)
1519 : {
1520 0 : switch (info->fieldIndex) {
1521 : case 0:
1522 0 : info->name = "addChildren";
1523 0 : info->eventType = GF_SG_EVENT_IN;
1524 0 : info->on_event_in = ((M_AudioSwitch *)node)->on_addChildren;
1525 0 : info->fieldType = GF_SG_VRML_MFNODE;
1526 0 : info->NDTtype = NDT_SFAudioNode;
1527 0 : info->far_ptr = & ((M_AudioSwitch *)node)->addChildren;
1528 0 : return GF_OK;
1529 : case 1:
1530 0 : info->name = "removeChildren";
1531 0 : info->eventType = GF_SG_EVENT_IN;
1532 0 : info->on_event_in = ((M_AudioSwitch *)node)->on_removeChildren;
1533 0 : info->fieldType = GF_SG_VRML_MFNODE;
1534 0 : info->NDTtype = NDT_SFAudioNode;
1535 0 : info->far_ptr = & ((M_AudioSwitch *)node)->removeChildren;
1536 0 : return GF_OK;
1537 : case 2:
1538 0 : info->name = "children";
1539 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1540 0 : info->fieldType = GF_SG_VRML_MFNODE;
1541 0 : info->NDTtype = NDT_SFAudioNode;
1542 0 : info->far_ptr = & ((M_AudioSwitch *)node)->children;
1543 0 : return GF_OK;
1544 : case 3:
1545 0 : info->name = "whichChoice";
1546 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1547 0 : info->fieldType = GF_SG_VRML_MFINT32;
1548 0 : info->far_ptr = & ((M_AudioSwitch *) node)->whichChoice;
1549 0 : return GF_OK;
1550 : case 4:
1551 0 : info->name = "numChan";
1552 0 : info->eventType = GF_SG_EVENT_FIELD;
1553 0 : info->fieldType = GF_SG_VRML_SFINT32;
1554 0 : info->far_ptr = & ((M_AudioSwitch *) node)->numChan;
1555 0 : return GF_OK;
1556 : case 5:
1557 0 : info->name = "phaseGroup";
1558 0 : info->eventType = GF_SG_EVENT_FIELD;
1559 0 : info->fieldType = GF_SG_VRML_MFINT32;
1560 0 : info->far_ptr = & ((M_AudioSwitch *) node)->phaseGroup;
1561 0 : return GF_OK;
1562 : default:
1563 0 : return GF_BAD_PARAM;
1564 : }
1565 0 : }
1566 :
1567 :
1568 : static s32 AudioSwitch_get_field_index_by_name(char *name)
1569 : {
1570 0 : if (!strcmp("addChildren", name)) return 0;
1571 0 : if (!strcmp("removeChildren", name)) return 1;
1572 0 : if (!strcmp("children", name)) return 2;
1573 0 : if (!strcmp("whichChoice", name)) return 3;
1574 0 : if (!strcmp("numChan", name)) return 4;
1575 0 : if (!strcmp("phaseGroup", name)) return 5;
1576 0 : return -1;
1577 0 : }
1578 : static Bool AudioSwitch_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
1579 : {
1580 0 : switch (FieldIndex) {
1581 : case 3:
1582 0 : *AType = 0;
1583 0 : *QType = 13;
1584 0 : *QT13_bits = 1;
1585 0 : *b_min = FLT2FIX(0);
1586 0 : *b_max = FLT2FIX(1);
1587 0 : return 1;
1588 : case 4:
1589 0 : *AType = 0;
1590 0 : *QType = 13;
1591 0 : *QT13_bits = 8;
1592 0 : *b_min = FLT2FIX(0);
1593 0 : *b_max = FLT2FIX(255);
1594 0 : return 1;
1595 : case 5:
1596 0 : *AType = 0;
1597 0 : *QType = 13;
1598 0 : *QT13_bits = 8;
1599 0 : *b_min = FLT2FIX(0);
1600 0 : *b_max = FLT2FIX(255);
1601 0 : return 1;
1602 : default:
1603 0 : return 0;
1604 : }
1605 0 : }
1606 :
1607 :
1608 :
1609 : GF_Node *AudioSwitch_Create()
1610 : {
1611 : M_AudioSwitch *p;
1612 0 : GF_SAFEALLOC(p, M_AudioSwitch);
1613 0 : if(!p) return NULL;
1614 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioSwitch);
1615 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
1616 :
1617 : /*default field values*/
1618 0 : p->numChan = 1;
1619 0 : return (GF_Node *)p;
1620 0 : }
1621 :
1622 :
1623 : /*
1624 : Background Node deletion
1625 : */
1626 :
1627 : static void Background_Del(GF_Node *node)
1628 : {
1629 122 : M_Background *p = (M_Background *) node;
1630 61 : gf_sg_mffloat_del(p->groundAngle);
1631 61 : gf_sg_mfcolor_del(p->groundColor);
1632 61 : gf_sg_mfurl_del(p->backUrl);
1633 61 : gf_sg_mfurl_del(p->bottomUrl);
1634 61 : gf_sg_mfurl_del(p->frontUrl);
1635 61 : gf_sg_mfurl_del(p->leftUrl);
1636 61 : gf_sg_mfurl_del(p->rightUrl);
1637 61 : gf_sg_mfurl_del(p->topUrl);
1638 61 : gf_sg_mffloat_del(p->skyAngle);
1639 61 : gf_sg_mfcolor_del(p->skyColor);
1640 61 : gf_node_free((GF_Node *) p);
1641 61 : }
1642 :
1643 : static const u16 Background_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
1644 : static const u16 Background_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
1645 : static const u16 Background_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
1646 : static const u16 Background_Dyn2All[] = { 1, 2, 9, 10};
1647 :
1648 : static u32 Background_get_field_count(GF_Node *node, u8 IndexMode)
1649 : {
1650 124 : switch(IndexMode) {
1651 : case GF_SG_FIELD_CODING_IN:
1652 9 : return 11;
1653 : case GF_SG_FIELD_CODING_DEF:
1654 27 : return 10;
1655 : case GF_SG_FIELD_CODING_OUT:
1656 0 : return 11;
1657 : case GF_SG_FIELD_CODING_DYN:
1658 0 : return 4;
1659 : default:
1660 26 : return 12;
1661 : }
1662 62 : }
1663 :
1664 : static GF_Err Background_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
1665 : {
1666 284 : switch(IndexMode) {
1667 : case GF_SG_FIELD_CODING_IN:
1668 7 : *allField = Background_In2All[inField];
1669 7 : return GF_OK;
1670 : case GF_SG_FIELD_CODING_DEF:
1671 135 : *allField = Background_Def2All[inField];
1672 135 : return GF_OK;
1673 : case GF_SG_FIELD_CODING_OUT:
1674 0 : *allField = Background_Out2All[inField];
1675 0 : return GF_OK;
1676 : case GF_SG_FIELD_CODING_DYN:
1677 0 : *allField = Background_Dyn2All[inField];
1678 0 : return GF_OK;
1679 : default:
1680 0 : return GF_BAD_PARAM;
1681 : }
1682 142 : }
1683 : static GF_Err Background_get_field(GF_Node *node, GF_FieldInfo *info)
1684 : {
1685 1870 : switch (info->fieldIndex) {
1686 : case 0:
1687 44 : info->name = "set_bind";
1688 44 : info->eventType = GF_SG_EVENT_IN;
1689 44 : info->on_event_in = ((M_Background *)node)->on_set_bind;
1690 44 : info->fieldType = GF_SG_VRML_SFBOOL;
1691 44 : info->far_ptr = & ((M_Background *) node)->set_bind;
1692 44 : return GF_OK;
1693 : case 1:
1694 94 : info->name = "groundAngle";
1695 94 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1696 94 : info->fieldType = GF_SG_VRML_MFFLOAT;
1697 94 : info->far_ptr = & ((M_Background *) node)->groundAngle;
1698 94 : return GF_OK;
1699 : case 2:
1700 94 : info->name = "groundColor";
1701 94 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1702 94 : info->fieldType = GF_SG_VRML_MFCOLOR;
1703 94 : info->far_ptr = & ((M_Background *) node)->groundColor;
1704 94 : return GF_OK;
1705 : case 3:
1706 79 : info->name = "backUrl";
1707 79 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1708 79 : info->fieldType = GF_SG_VRML_MFURL;
1709 79 : info->far_ptr = & ((M_Background *) node)->backUrl;
1710 79 : return GF_OK;
1711 : case 4:
1712 79 : info->name = "bottomUrl";
1713 79 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1714 79 : info->fieldType = GF_SG_VRML_MFURL;
1715 79 : info->far_ptr = & ((M_Background *) node)->bottomUrl;
1716 79 : return GF_OK;
1717 : case 5:
1718 94 : info->name = "frontUrl";
1719 94 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1720 94 : info->fieldType = GF_SG_VRML_MFURL;
1721 94 : info->far_ptr = & ((M_Background *) node)->frontUrl;
1722 94 : return GF_OK;
1723 : case 6:
1724 79 : info->name = "leftUrl";
1725 79 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1726 79 : info->fieldType = GF_SG_VRML_MFURL;
1727 79 : info->far_ptr = & ((M_Background *) node)->leftUrl;
1728 79 : return GF_OK;
1729 : case 7:
1730 79 : info->name = "rightUrl";
1731 79 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1732 79 : info->fieldType = GF_SG_VRML_MFURL;
1733 79 : info->far_ptr = & ((M_Background *) node)->rightUrl;
1734 79 : return GF_OK;
1735 : case 8:
1736 79 : info->name = "topUrl";
1737 79 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1738 79 : info->fieldType = GF_SG_VRML_MFURL;
1739 79 : info->far_ptr = & ((M_Background *) node)->topUrl;
1740 79 : return GF_OK;
1741 : case 9:
1742 94 : info->name = "skyAngle";
1743 94 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1744 94 : info->fieldType = GF_SG_VRML_MFFLOAT;
1745 94 : info->far_ptr = & ((M_Background *) node)->skyAngle;
1746 94 : return GF_OK;
1747 : case 10:
1748 94 : info->name = "skyColor";
1749 94 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1750 94 : info->fieldType = GF_SG_VRML_MFCOLOR;
1751 94 : info->far_ptr = & ((M_Background *) node)->skyColor;
1752 94 : return GF_OK;
1753 : case 11:
1754 26 : info->name = "isBound";
1755 26 : info->eventType = GF_SG_EVENT_OUT;
1756 26 : info->fieldType = GF_SG_VRML_SFBOOL;
1757 26 : info->far_ptr = & ((M_Background *) node)->isBound;
1758 26 : return GF_OK;
1759 : default:
1760 0 : return GF_BAD_PARAM;
1761 : }
1762 935 : }
1763 :
1764 :
1765 : static s32 Background_get_field_index_by_name(char *name)
1766 : {
1767 132 : if (!strcmp("set_bind", name)) return 0;
1768 68 : if (!strcmp("groundAngle", name)) return 1;
1769 60 : if (!strcmp("groundColor", name)) return 2;
1770 48 : if (!strcmp("backUrl", name)) return 3;
1771 44 : if (!strcmp("bottomUrl", name)) return 4;
1772 44 : if (!strcmp("frontUrl", name)) return 5;
1773 32 : if (!strcmp("leftUrl", name)) return 6;
1774 28 : if (!strcmp("rightUrl", name)) return 7;
1775 24 : if (!strcmp("topUrl", name)) return 8;
1776 24 : if (!strcmp("skyAngle", name)) return 9;
1777 16 : if (!strcmp("skyColor", name)) return 10;
1778 0 : if (!strcmp("isBound", name)) return 11;
1779 0 : return -1;
1780 64 : }
1781 : static Bool Background_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
1782 : {
1783 0 : switch (FieldIndex) {
1784 : case 1:
1785 0 : *AType = 8;
1786 0 : *QType = 6;
1787 0 : *b_min = FLT2FIX(0);
1788 0 : *b_max = FLT2FIX(1.5707963);
1789 0 : return 1;
1790 : case 2:
1791 0 : *AType = 4;
1792 0 : *QType = 4;
1793 0 : *b_min = FLT2FIX(0);
1794 0 : *b_max = FLT2FIX(1);
1795 0 : return 1;
1796 : case 9:
1797 0 : *AType = 8;
1798 0 : *QType = 6;
1799 0 : *b_min = FLT2FIX(0);
1800 0 : *b_max = FLT2FIX(3.14159265);
1801 0 : return 1;
1802 : case 10:
1803 0 : *AType = 4;
1804 0 : *QType = 4;
1805 0 : *b_min = FLT2FIX(0);
1806 0 : *b_max = FLT2FIX(1);
1807 0 : return 1;
1808 : default:
1809 0 : return 0;
1810 : }
1811 0 : }
1812 :
1813 :
1814 :
1815 : GF_Node *Background_Create()
1816 : {
1817 : M_Background *p;
1818 183 : GF_SAFEALLOC(p, M_Background);
1819 61 : if(!p) return NULL;
1820 61 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Background);
1821 :
1822 : /*default field values*/
1823 61 : p->skyColor.vals = (SFColor*)gf_malloc(sizeof(SFColor)*1);
1824 61 : p->skyColor.count = 1;
1825 61 : p->skyColor.vals[0].red = FLT2FIX(0);
1826 61 : p->skyColor.vals[0].green = FLT2FIX(0);
1827 61 : p->skyColor.vals[0].blue = FLT2FIX(0);
1828 61 : return (GF_Node *)p;
1829 61 : }
1830 :
1831 :
1832 : /*
1833 : Background2D Node deletion
1834 : */
1835 :
1836 : static void Background2D_Del(GF_Node *node)
1837 : {
1838 10464 : M_Background2D *p = (M_Background2D *) node;
1839 5232 : gf_sg_mfurl_del(p->url);
1840 5232 : gf_node_free((GF_Node *) p);
1841 5232 : }
1842 :
1843 : static const u16 Background2D_Def2All[] = { 1, 2};
1844 : static const u16 Background2D_In2All[] = { 0, 1, 2};
1845 : static const u16 Background2D_Out2All[] = { 1, 2, 3};
1846 : static const u16 Background2D_Dyn2All[] = { 1};
1847 :
1848 : static u32 Background2D_get_field_count(GF_Node *node, u8 IndexMode)
1849 : {
1850 9664 : switch(IndexMode) {
1851 : case GF_SG_FIELD_CODING_IN:
1852 173 : return 3;
1853 : case GF_SG_FIELD_CODING_DEF:
1854 2587 : return 2;
1855 : case GF_SG_FIELD_CODING_OUT:
1856 0 : return 3;
1857 : case GF_SG_FIELD_CODING_DYN:
1858 0 : return 1;
1859 : default:
1860 2072 : return 4;
1861 : }
1862 4832 : }
1863 :
1864 : static GF_Err Background2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
1865 : {
1866 5512 : switch(IndexMode) {
1867 : case GF_SG_FIELD_CODING_IN:
1868 159 : *allField = Background2D_In2All[inField];
1869 159 : return GF_OK;
1870 : case GF_SG_FIELD_CODING_DEF:
1871 2597 : *allField = Background2D_Def2All[inField];
1872 2597 : return GF_OK;
1873 : case GF_SG_FIELD_CODING_OUT:
1874 0 : *allField = Background2D_Out2All[inField];
1875 0 : return GF_OK;
1876 : case GF_SG_FIELD_CODING_DYN:
1877 0 : *allField = Background2D_Dyn2All[inField];
1878 0 : return GF_OK;
1879 : default:
1880 0 : return GF_BAD_PARAM;
1881 : }
1882 2756 : }
1883 : static GF_Err Background2D_get_field(GF_Node *node, GF_FieldInfo *info)
1884 : {
1885 38716 : switch (info->fieldIndex) {
1886 : case 0:
1887 2222 : info->name = "set_bind";
1888 2222 : info->eventType = GF_SG_EVENT_IN;
1889 2222 : info->on_event_in = ((M_Background2D *)node)->on_set_bind;
1890 2222 : info->fieldType = GF_SG_VRML_SFBOOL;
1891 2222 : info->far_ptr = & ((M_Background2D *) node)->set_bind;
1892 2222 : return GF_OK;
1893 : case 1:
1894 9491 : info->name = "backColor";
1895 9491 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1896 9491 : info->fieldType = GF_SG_VRML_SFCOLOR;
1897 9491 : info->far_ptr = & ((M_Background2D *) node)->backColor;
1898 9491 : return GF_OK;
1899 : case 2:
1900 5573 : info->name = "url";
1901 5573 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1902 5573 : info->fieldType = GF_SG_VRML_MFURL;
1903 5573 : info->far_ptr = & ((M_Background2D *) node)->url;
1904 5573 : return GF_OK;
1905 : case 3:
1906 2072 : info->name = "isBound";
1907 2072 : info->eventType = GF_SG_EVENT_OUT;
1908 2072 : info->fieldType = GF_SG_VRML_SFBOOL;
1909 2072 : info->far_ptr = & ((M_Background2D *) node)->isBound;
1910 2072 : return GF_OK;
1911 : default:
1912 0 : return GF_BAD_PARAM;
1913 : }
1914 19358 : }
1915 :
1916 :
1917 : static s32 Background2D_get_field_index_by_name(char *name)
1918 : {
1919 2526 : if (!strcmp("set_bind", name)) return 0;
1920 2326 : if (!strcmp("backColor", name)) return 1;
1921 136 : if (!strcmp("url", name)) return 2;
1922 0 : if (!strcmp("isBound", name)) return 3;
1923 0 : return -1;
1924 1241 : }
1925 : static Bool Background2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
1926 : {
1927 0 : switch (FieldIndex) {
1928 : case 1:
1929 0 : *AType = 4;
1930 0 : *QType = 4;
1931 0 : *b_min = FLT2FIX(0);
1932 0 : *b_max = FLT2FIX(1);
1933 0 : return 1;
1934 : default:
1935 0 : return 0;
1936 : }
1937 0 : }
1938 :
1939 :
1940 :
1941 : GF_Node *Background2D_Create()
1942 : {
1943 : M_Background2D *p;
1944 15696 : GF_SAFEALLOC(p, M_Background2D);
1945 5232 : if(!p) return NULL;
1946 5232 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Background2D);
1947 :
1948 : /*default field values*/
1949 5232 : p->backColor.red = FLT2FIX(0);
1950 5232 : p->backColor.green = FLT2FIX(0);
1951 5232 : p->backColor.blue = FLT2FIX(0);
1952 5232 : return (GF_Node *)p;
1953 5232 : }
1954 :
1955 :
1956 : /*
1957 : Billboard Node deletion
1958 : */
1959 :
1960 : static void Billboard_Del(GF_Node *node)
1961 : {
1962 108 : M_Billboard *p = (M_Billboard *) node;
1963 54 : gf_sg_vrml_parent_destroy((GF_Node *) p);
1964 54 : gf_node_free((GF_Node *) p);
1965 54 : }
1966 :
1967 : static const u16 Billboard_Def2All[] = { 2, 3};
1968 : static const u16 Billboard_In2All[] = { 0, 1, 2, 3};
1969 : static const u16 Billboard_Out2All[] = { 2, 3};
1970 : static const u16 Billboard_Dyn2All[] = { 3};
1971 :
1972 : static u32 Billboard_get_field_count(GF_Node *node, u8 IndexMode)
1973 : {
1974 96 : switch(IndexMode) {
1975 : case GF_SG_FIELD_CODING_IN:
1976 0 : return 4;
1977 : case GF_SG_FIELD_CODING_DEF:
1978 27 : return 2;
1979 : case GF_SG_FIELD_CODING_OUT:
1980 0 : return 2;
1981 : case GF_SG_FIELD_CODING_DYN:
1982 0 : return 1;
1983 : default:
1984 21 : return 4;
1985 : }
1986 48 : }
1987 :
1988 : static GF_Err Billboard_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
1989 : {
1990 74 : switch(IndexMode) {
1991 : case GF_SG_FIELD_CODING_IN:
1992 0 : *allField = Billboard_In2All[inField];
1993 0 : return GF_OK;
1994 : case GF_SG_FIELD_CODING_DEF:
1995 37 : *allField = Billboard_Def2All[inField];
1996 37 : return GF_OK;
1997 : case GF_SG_FIELD_CODING_OUT:
1998 0 : *allField = Billboard_Out2All[inField];
1999 0 : return GF_OK;
2000 : case GF_SG_FIELD_CODING_DYN:
2001 0 : *allField = Billboard_Dyn2All[inField];
2002 0 : return GF_OK;
2003 : default:
2004 0 : return GF_BAD_PARAM;
2005 : }
2006 37 : }
2007 : static GF_Err Billboard_get_field(GF_Node *node, GF_FieldInfo *info)
2008 : {
2009 400 : switch (info->fieldIndex) {
2010 : case 0:
2011 21 : info->name = "addChildren";
2012 21 : info->eventType = GF_SG_EVENT_IN;
2013 21 : info->on_event_in = ((M_Billboard *)node)->on_addChildren;
2014 21 : info->fieldType = GF_SG_VRML_MFNODE;
2015 21 : info->NDTtype = NDT_SF3DNode;
2016 21 : info->far_ptr = & ((M_Billboard *)node)->addChildren;
2017 21 : return GF_OK;
2018 : case 1:
2019 21 : info->name = "removeChildren";
2020 21 : info->eventType = GF_SG_EVENT_IN;
2021 21 : info->on_event_in = ((M_Billboard *)node)->on_removeChildren;
2022 21 : info->fieldType = GF_SG_VRML_MFNODE;
2023 21 : info->NDTtype = NDT_SF3DNode;
2024 21 : info->far_ptr = & ((M_Billboard *)node)->removeChildren;
2025 21 : return GF_OK;
2026 : case 2:
2027 72 : info->name = "children";
2028 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2029 72 : info->fieldType = GF_SG_VRML_MFNODE;
2030 72 : info->NDTtype = NDT_SF3DNode;
2031 72 : info->far_ptr = & ((M_Billboard *)node)->children;
2032 72 : return GF_OK;
2033 : case 3:
2034 86 : info->name = "axisOfRotation";
2035 86 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2036 86 : info->fieldType = GF_SG_VRML_SFVEC3F;
2037 86 : info->far_ptr = & ((M_Billboard *) node)->axisOfRotation;
2038 86 : return GF_OK;
2039 : default:
2040 0 : return GF_BAD_PARAM;
2041 : }
2042 200 : }
2043 :
2044 :
2045 : static s32 Billboard_get_field_index_by_name(char *name)
2046 : {
2047 44 : if (!strcmp("addChildren", name)) return 0;
2048 22 : if (!strcmp("removeChildren", name)) return 1;
2049 34 : if (!strcmp("children", name)) return 2;
2050 20 : if (!strcmp("axisOfRotation", name)) return 3;
2051 0 : return -1;
2052 22 : }
2053 : static Bool Billboard_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2054 : {
2055 0 : switch (FieldIndex) {
2056 : case 3:
2057 0 : *AType = 9;
2058 0 : *QType = 9;
2059 0 : return 1;
2060 : default:
2061 0 : return 0;
2062 : }
2063 0 : }
2064 :
2065 :
2066 :
2067 : GF_Node *Billboard_Create()
2068 : {
2069 : M_Billboard *p;
2070 162 : GF_SAFEALLOC(p, M_Billboard);
2071 54 : if(!p) return NULL;
2072 54 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Billboard);
2073 54 : gf_sg_vrml_parent_setup((GF_Node *) p);
2074 :
2075 : /*default field values*/
2076 54 : p->axisOfRotation.x = FLT2FIX(0);
2077 54 : p->axisOfRotation.y = FLT2FIX(1);
2078 54 : p->axisOfRotation.z = FLT2FIX(0);
2079 54 : return (GF_Node *)p;
2080 54 : }
2081 :
2082 :
2083 : /*
2084 : Bitmap Node deletion
2085 : */
2086 :
2087 : static void Bitmap_Del(GF_Node *node)
2088 : {
2089 1156 : M_Bitmap *p = (M_Bitmap *) node;
2090 578 : gf_node_free((GF_Node *) p);
2091 578 : }
2092 :
2093 : static const u16 Bitmap_Def2All[] = { 0};
2094 : static const u16 Bitmap_In2All[] = { 0};
2095 : static const u16 Bitmap_Out2All[] = { 0};
2096 : static const u16 Bitmap_Dyn2All[] = { 0};
2097 :
2098 : static u32 Bitmap_get_field_count(GF_Node *node, u8 IndexMode)
2099 : {
2100 1082 : switch(IndexMode) {
2101 : case GF_SG_FIELD_CODING_IN:
2102 18 : return 1;
2103 : case GF_SG_FIELD_CODING_DEF:
2104 264 : return 1;
2105 : case GF_SG_FIELD_CODING_OUT:
2106 0 : return 1;
2107 : case GF_SG_FIELD_CODING_DYN:
2108 0 : return 1;
2109 : default:
2110 259 : return 1;
2111 : }
2112 541 : }
2113 :
2114 : static GF_Err Bitmap_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2115 : {
2116 224 : switch(IndexMode) {
2117 : case GF_SG_FIELD_CODING_IN:
2118 14 : *allField = Bitmap_In2All[inField];
2119 14 : return GF_OK;
2120 : case GF_SG_FIELD_CODING_DEF:
2121 98 : *allField = Bitmap_Def2All[inField];
2122 98 : return GF_OK;
2123 : case GF_SG_FIELD_CODING_OUT:
2124 0 : *allField = Bitmap_Out2All[inField];
2125 0 : return GF_OK;
2126 : case GF_SG_FIELD_CODING_DYN:
2127 0 : *allField = Bitmap_Dyn2All[inField];
2128 0 : return GF_OK;
2129 : default:
2130 0 : return GF_BAD_PARAM;
2131 : }
2132 112 : }
2133 : static GF_Err Bitmap_get_field(GF_Node *node, GF_FieldInfo *info)
2134 : {
2135 1508 : switch (info->fieldIndex) {
2136 : case 0:
2137 754 : info->name = "scale";
2138 754 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2139 754 : info->fieldType = GF_SG_VRML_SFVEC2F;
2140 754 : info->far_ptr = & ((M_Bitmap *) node)->scale;
2141 754 : return GF_OK;
2142 : default:
2143 0 : return GF_BAD_PARAM;
2144 : }
2145 754 : }
2146 :
2147 :
2148 : static s32 Bitmap_get_field_index_by_name(char *name)
2149 : {
2150 120 : if (!strcmp("scale", name)) return 0;
2151 0 : return -1;
2152 40 : }
2153 : static Bool Bitmap_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2154 : {
2155 0 : switch (FieldIndex) {
2156 : case 0:
2157 0 : *AType = 12;
2158 0 : *QType = 12;
2159 0 : *b_min = FLT2FIX(-1);
2160 0 : *b_max = FIX_MAX;
2161 0 : return 1;
2162 : default:
2163 0 : return 0;
2164 : }
2165 0 : }
2166 :
2167 :
2168 :
2169 : GF_Node *Bitmap_Create()
2170 : {
2171 : M_Bitmap *p;
2172 1734 : GF_SAFEALLOC(p, M_Bitmap);
2173 578 : if(!p) return NULL;
2174 578 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Bitmap);
2175 :
2176 : /*default field values*/
2177 578 : p->scale.x = FLT2FIX(-1);
2178 578 : p->scale.y = FLT2FIX(-1);
2179 578 : return (GF_Node *)p;
2180 578 : }
2181 :
2182 :
2183 : /*
2184 : Box Node deletion
2185 : */
2186 :
2187 : static void Box_Del(GF_Node *node)
2188 : {
2189 1856 : M_Box *p = (M_Box *) node;
2190 928 : gf_node_free((GF_Node *) p);
2191 928 : }
2192 :
2193 : static const u16 Box_Def2All[] = { 0};
2194 :
2195 : static u32 Box_get_field_count(GF_Node *node, u8 IndexMode)
2196 : {
2197 1684 : switch(IndexMode) {
2198 : case GF_SG_FIELD_CODING_IN:
2199 0 : return 0;
2200 : case GF_SG_FIELD_CODING_DEF:
2201 387 : return 1;
2202 : case GF_SG_FIELD_CODING_OUT:
2203 0 : return 0;
2204 : case GF_SG_FIELD_CODING_DYN:
2205 0 : return 0;
2206 : default:
2207 455 : return 1;
2208 : }
2209 842 : }
2210 :
2211 : static GF_Err Box_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2212 : {
2213 532 : switch(IndexMode) {
2214 : case GF_SG_FIELD_CODING_DEF:
2215 266 : *allField = Box_Def2All[inField];
2216 266 : return GF_OK;
2217 : default:
2218 0 : return GF_BAD_PARAM;
2219 : }
2220 266 : }
2221 : static GF_Err Box_get_field(GF_Node *node, GF_FieldInfo *info)
2222 : {
2223 3264 : switch (info->fieldIndex) {
2224 : case 0:
2225 1632 : info->name = "size";
2226 1632 : info->eventType = GF_SG_EVENT_FIELD;
2227 1632 : info->fieldType = GF_SG_VRML_SFVEC3F;
2228 1632 : info->far_ptr = & ((M_Box *) node)->size;
2229 1632 : return GF_OK;
2230 : default:
2231 0 : return GF_BAD_PARAM;
2232 : }
2233 1632 : }
2234 :
2235 :
2236 : static s32 Box_get_field_index_by_name(char *name)
2237 : {
2238 462 : if (!strcmp("size", name)) return 0;
2239 0 : return -1;
2240 154 : }
2241 : static Bool Box_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2242 : {
2243 0 : switch (FieldIndex) {
2244 : case 0:
2245 0 : *AType = 0;
2246 0 : *QType = 11;
2247 0 : *b_min = FLT2FIX(0);
2248 0 : *b_max = FIX_MAX;
2249 0 : return 1;
2250 : default:
2251 0 : return 0;
2252 : }
2253 0 : }
2254 :
2255 :
2256 :
2257 : GF_Node *Box_Create()
2258 : {
2259 : M_Box *p;
2260 2784 : GF_SAFEALLOC(p, M_Box);
2261 928 : if(!p) return NULL;
2262 928 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Box);
2263 :
2264 : /*default field values*/
2265 928 : p->size.x = FLT2FIX(2);
2266 928 : p->size.y = FLT2FIX(2);
2267 928 : p->size.z = FLT2FIX(2);
2268 928 : return (GF_Node *)p;
2269 928 : }
2270 :
2271 :
2272 : /*
2273 : Circle Node deletion
2274 : */
2275 :
2276 : static void Circle_Del(GF_Node *node)
2277 : {
2278 5928 : M_Circle *p = (M_Circle *) node;
2279 2964 : gf_node_free((GF_Node *) p);
2280 2964 : }
2281 :
2282 : static const u16 Circle_Def2All[] = { 0};
2283 : static const u16 Circle_In2All[] = { 0};
2284 : static const u16 Circle_Out2All[] = { 0};
2285 : static const u16 Circle_Dyn2All[] = { 0};
2286 :
2287 : static u32 Circle_get_field_count(GF_Node *node, u8 IndexMode)
2288 : {
2289 5532 : switch(IndexMode) {
2290 : case GF_SG_FIELD_CODING_IN:
2291 18 : return 1;
2292 : case GF_SG_FIELD_CODING_DEF:
2293 937 : return 1;
2294 : case GF_SG_FIELD_CODING_OUT:
2295 0 : return 1;
2296 : case GF_SG_FIELD_CODING_DYN:
2297 0 : return 1;
2298 : default:
2299 1811 : return 1;
2300 : }
2301 2766 : }
2302 :
2303 : static GF_Err Circle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2304 : {
2305 1452 : switch(IndexMode) {
2306 : case GF_SG_FIELD_CODING_IN:
2307 14 : *allField = Circle_In2All[inField];
2308 14 : return GF_OK;
2309 : case GF_SG_FIELD_CODING_DEF:
2310 712 : *allField = Circle_Def2All[inField];
2311 712 : return GF_OK;
2312 : case GF_SG_FIELD_CODING_OUT:
2313 0 : *allField = Circle_Out2All[inField];
2314 0 : return GF_OK;
2315 : case GF_SG_FIELD_CODING_DYN:
2316 0 : *allField = Circle_Dyn2All[inField];
2317 0 : return GF_OK;
2318 : default:
2319 0 : return GF_BAD_PARAM;
2320 : }
2321 726 : }
2322 : static GF_Err Circle_get_field(GF_Node *node, GF_FieldInfo *info)
2323 : {
2324 11184 : switch (info->fieldIndex) {
2325 : case 0:
2326 5592 : info->name = "radius";
2327 5592 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2328 5592 : info->fieldType = GF_SG_VRML_SFFLOAT;
2329 5592 : info->far_ptr = & ((M_Circle *) node)->radius;
2330 5592 : return GF_OK;
2331 : default:
2332 0 : return GF_BAD_PARAM;
2333 : }
2334 5592 : }
2335 :
2336 :
2337 : static s32 Circle_get_field_index_by_name(char *name)
2338 : {
2339 1326 : if (!strcmp("radius", name)) return 0;
2340 0 : return -1;
2341 442 : }
2342 : static Bool Circle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2343 : {
2344 0 : switch (FieldIndex) {
2345 : case 0:
2346 0 : *AType = 7;
2347 0 : *QType = 12;
2348 0 : *b_min = FLT2FIX(0);
2349 0 : *b_max = FIX_MAX;
2350 0 : return 1;
2351 : default:
2352 0 : return 0;
2353 : }
2354 0 : }
2355 :
2356 :
2357 :
2358 : GF_Node *Circle_Create()
2359 : {
2360 : M_Circle *p;
2361 8892 : GF_SAFEALLOC(p, M_Circle);
2362 2964 : if(!p) return NULL;
2363 2964 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Circle);
2364 :
2365 : /*default field values*/
2366 2964 : p->radius = FLT2FIX(1);
2367 2964 : return (GF_Node *)p;
2368 2964 : }
2369 :
2370 :
2371 : /*
2372 : Collision Node deletion
2373 : */
2374 :
2375 : static void Collision_Del(GF_Node *node)
2376 : {
2377 72 : M_Collision *p = (M_Collision *) node;
2378 36 : gf_node_unregister((GF_Node *) p->proxy, (GF_Node *) p);
2379 36 : gf_sg_vrml_parent_destroy((GF_Node *) p);
2380 36 : gf_node_free((GF_Node *) p);
2381 36 : }
2382 :
2383 : static const u16 Collision_Def2All[] = { 2, 3, 4};
2384 : static const u16 Collision_In2All[] = { 0, 1, 2, 3};
2385 : static const u16 Collision_Out2All[] = { 2, 3, 5};
2386 :
2387 : static u32 Collision_get_field_count(GF_Node *node, u8 IndexMode)
2388 : {
2389 100 : switch(IndexMode) {
2390 : case GF_SG_FIELD_CODING_IN:
2391 0 : return 4;
2392 : case GF_SG_FIELD_CODING_DEF:
2393 18 : return 3;
2394 : case GF_SG_FIELD_CODING_OUT:
2395 18 : return 3;
2396 : case GF_SG_FIELD_CODING_DYN:
2397 0 : return 0;
2398 : default:
2399 14 : return 6;
2400 : }
2401 50 : }
2402 :
2403 : static GF_Err Collision_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2404 : {
2405 98 : switch(IndexMode) {
2406 : case GF_SG_FIELD_CODING_IN:
2407 0 : *allField = Collision_In2All[inField];
2408 0 : return GF_OK;
2409 : case GF_SG_FIELD_CODING_DEF:
2410 27 : *allField = Collision_Def2All[inField];
2411 27 : return GF_OK;
2412 : case GF_SG_FIELD_CODING_OUT:
2413 22 : *allField = Collision_Out2All[inField];
2414 22 : return GF_OK;
2415 : default:
2416 0 : return GF_BAD_PARAM;
2417 : }
2418 49 : }
2419 : static GF_Err Collision_get_field(GF_Node *node, GF_FieldInfo *info)
2420 : {
2421 350 : switch (info->fieldIndex) {
2422 : case 0:
2423 14 : info->name = "addChildren";
2424 14 : info->eventType = GF_SG_EVENT_IN;
2425 14 : info->on_event_in = ((M_Collision *)node)->on_addChildren;
2426 14 : info->fieldType = GF_SG_VRML_MFNODE;
2427 14 : info->NDTtype = NDT_SF3DNode;
2428 14 : info->far_ptr = & ((M_Collision *)node)->addChildren;
2429 14 : return GF_OK;
2430 : case 1:
2431 14 : info->name = "removeChildren";
2432 14 : info->eventType = GF_SG_EVENT_IN;
2433 14 : info->on_event_in = ((M_Collision *)node)->on_removeChildren;
2434 14 : info->fieldType = GF_SG_VRML_MFNODE;
2435 14 : info->NDTtype = NDT_SF3DNode;
2436 14 : info->far_ptr = & ((M_Collision *)node)->removeChildren;
2437 14 : return GF_OK;
2438 : case 2:
2439 48 : info->name = "children";
2440 48 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2441 48 : info->fieldType = GF_SG_VRML_MFNODE;
2442 48 : info->NDTtype = NDT_SF3DNode;
2443 48 : info->far_ptr = & ((M_Collision *)node)->children;
2444 48 : return GF_OK;
2445 : case 3:
2446 36 : info->name = "collide";
2447 36 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2448 36 : info->fieldType = GF_SG_VRML_SFBOOL;
2449 36 : info->far_ptr = & ((M_Collision *) node)->collide;
2450 36 : return GF_OK;
2451 : case 4:
2452 33 : info->name = "proxy";
2453 33 : info->eventType = GF_SG_EVENT_FIELD;
2454 33 : info->fieldType = GF_SG_VRML_SFNODE;
2455 33 : info->NDTtype = NDT_SF3DNode;
2456 33 : info->far_ptr = & ((M_Collision *)node)->proxy;
2457 33 : return GF_OK;
2458 : case 5:
2459 30 : info->name = "collideTime";
2460 30 : info->eventType = GF_SG_EVENT_OUT;
2461 30 : info->fieldType = GF_SG_VRML_SFTIME;
2462 30 : info->far_ptr = & ((M_Collision *) node)->collideTime;
2463 30 : return GF_OK;
2464 : default:
2465 0 : return GF_BAD_PARAM;
2466 : }
2467 175 : }
2468 :
2469 :
2470 : static s32 Collision_get_field_index_by_name(char *name)
2471 : {
2472 40 : if (!strcmp("addChildren", name)) return 0;
2473 20 : if (!strcmp("removeChildren", name)) return 1;
2474 28 : if (!strcmp("children", name)) return 2;
2475 12 : if (!strcmp("collide", name)) return 3;
2476 16 : if (!strcmp("proxy", name)) return 4;
2477 16 : if (!strcmp("collideTime", name)) return 5;
2478 0 : return -1;
2479 20 : }
2480 : static Bool Collision_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2481 : {
2482 : switch (FieldIndex) {
2483 : default:
2484 0 : return 0;
2485 : }
2486 : }
2487 :
2488 :
2489 :
2490 : GF_Node *Collision_Create()
2491 : {
2492 : M_Collision *p;
2493 108 : GF_SAFEALLOC(p, M_Collision);
2494 36 : if(!p) return NULL;
2495 36 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Collision);
2496 36 : gf_sg_vrml_parent_setup((GF_Node *) p);
2497 :
2498 : /*default field values*/
2499 36 : p->collide = 1;
2500 36 : return (GF_Node *)p;
2501 36 : }
2502 :
2503 :
2504 : /*
2505 : Color Node deletion
2506 : */
2507 :
2508 : static void Color_Del(GF_Node *node)
2509 : {
2510 304 : M_Color *p = (M_Color *) node;
2511 152 : gf_sg_mfcolor_del(p->color);
2512 152 : gf_node_free((GF_Node *) p);
2513 152 : }
2514 :
2515 : static const u16 Color_Def2All[] = { 0};
2516 : static const u16 Color_In2All[] = { 0};
2517 : static const u16 Color_Out2All[] = { 0};
2518 : static const u16 Color_Dyn2All[] = { 0};
2519 :
2520 : static u32 Color_get_field_count(GF_Node *node, u8 IndexMode)
2521 : {
2522 268 : switch(IndexMode) {
2523 : case GF_SG_FIELD_CODING_IN:
2524 0 : return 1;
2525 : case GF_SG_FIELD_CODING_DEF:
2526 72 : return 1;
2527 : case GF_SG_FIELD_CODING_OUT:
2528 0 : return 1;
2529 : case GF_SG_FIELD_CODING_DYN:
2530 0 : return 1;
2531 : default:
2532 62 : return 1;
2533 : }
2534 134 : }
2535 :
2536 : static GF_Err Color_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2537 : {
2538 112 : switch(IndexMode) {
2539 : case GF_SG_FIELD_CODING_IN:
2540 0 : *allField = Color_In2All[inField];
2541 0 : return GF_OK;
2542 : case GF_SG_FIELD_CODING_DEF:
2543 56 : *allField = Color_Def2All[inField];
2544 56 : return GF_OK;
2545 : case GF_SG_FIELD_CODING_OUT:
2546 0 : *allField = Color_Out2All[inField];
2547 0 : return GF_OK;
2548 : case GF_SG_FIELD_CODING_DYN:
2549 0 : *allField = Color_Dyn2All[inField];
2550 0 : return GF_OK;
2551 : default:
2552 0 : return GF_BAD_PARAM;
2553 : }
2554 56 : }
2555 : static GF_Err Color_get_field(GF_Node *node, GF_FieldInfo *info)
2556 : {
2557 552 : switch (info->fieldIndex) {
2558 : case 0:
2559 276 : info->name = "color";
2560 276 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2561 276 : info->fieldType = GF_SG_VRML_MFCOLOR;
2562 276 : info->far_ptr = & ((M_Color *) node)->color;
2563 276 : return GF_OK;
2564 : default:
2565 0 : return GF_BAD_PARAM;
2566 : }
2567 276 : }
2568 :
2569 :
2570 : static s32 Color_get_field_index_by_name(char *name)
2571 : {
2572 96 : if (!strcmp("color", name)) return 0;
2573 0 : return -1;
2574 32 : }
2575 : static Bool Color_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2576 : {
2577 0 : switch (FieldIndex) {
2578 : case 0:
2579 0 : *AType = 4;
2580 0 : *QType = 4;
2581 0 : *b_min = FLT2FIX(0);
2582 0 : *b_max = FLT2FIX(1);
2583 0 : return 1;
2584 : default:
2585 0 : return 0;
2586 : }
2587 0 : }
2588 :
2589 :
2590 :
2591 : GF_Node *Color_Create()
2592 : {
2593 : M_Color *p;
2594 456 : GF_SAFEALLOC(p, M_Color);
2595 152 : if(!p) return NULL;
2596 152 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Color);
2597 :
2598 : /*default field values*/
2599 152 : return (GF_Node *)p;
2600 152 : }
2601 :
2602 :
2603 : /*
2604 : ColorInterpolator Node deletion
2605 : */
2606 :
2607 : static void ColorInterpolator_Del(GF_Node *node)
2608 : {
2609 216 : M_ColorInterpolator *p = (M_ColorInterpolator *) node;
2610 108 : gf_sg_mffloat_del(p->key);
2611 108 : gf_sg_mfcolor_del(p->keyValue);
2612 108 : gf_node_free((GF_Node *) p);
2613 108 : }
2614 :
2615 : static const u16 ColorInterpolator_Def2All[] = { 1, 2};
2616 : static const u16 ColorInterpolator_In2All[] = { 0, 1, 2};
2617 : static const u16 ColorInterpolator_Out2All[] = { 1, 2, 3};
2618 :
2619 : static u32 ColorInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
2620 : {
2621 408 : switch(IndexMode) {
2622 : case GF_SG_FIELD_CODING_IN:
2623 54 : return 3;
2624 : case GF_SG_FIELD_CODING_DEF:
2625 54 : return 2;
2626 : case GF_SG_FIELD_CODING_OUT:
2627 54 : return 3;
2628 : case GF_SG_FIELD_CODING_DYN:
2629 0 : return 0;
2630 : default:
2631 42 : return 4;
2632 : }
2633 204 : }
2634 :
2635 : static GF_Err ColorInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2636 : {
2637 384 : switch(IndexMode) {
2638 : case GF_SG_FIELD_CODING_IN:
2639 42 : *allField = ColorInterpolator_In2All[inField];
2640 42 : return GF_OK;
2641 : case GF_SG_FIELD_CODING_DEF:
2642 84 : *allField = ColorInterpolator_Def2All[inField];
2643 84 : return GF_OK;
2644 : case GF_SG_FIELD_CODING_OUT:
2645 66 : *allField = ColorInterpolator_Out2All[inField];
2646 66 : return GF_OK;
2647 : default:
2648 0 : return GF_BAD_PARAM;
2649 : }
2650 192 : }
2651 : static GF_Err ColorInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
2652 : {
2653 1152 : switch (info->fieldIndex) {
2654 : case 0:
2655 90 : info->name = "set_fraction";
2656 90 : info->eventType = GF_SG_EVENT_IN;
2657 90 : info->on_event_in = ((M_ColorInterpolator *)node)->on_set_fraction;
2658 90 : info->fieldType = GF_SG_VRML_SFFLOAT;
2659 90 : info->far_ptr = & ((M_ColorInterpolator *) node)->set_fraction;
2660 90 : return GF_OK;
2661 : case 1:
2662 198 : info->name = "key";
2663 198 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2664 198 : info->fieldType = GF_SG_VRML_MFFLOAT;
2665 198 : info->far_ptr = & ((M_ColorInterpolator *) node)->key;
2666 198 : return GF_OK;
2667 : case 2:
2668 198 : info->name = "keyValue";
2669 198 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2670 198 : info->fieldType = GF_SG_VRML_MFCOLOR;
2671 198 : info->far_ptr = & ((M_ColorInterpolator *) node)->keyValue;
2672 198 : return GF_OK;
2673 : case 3:
2674 90 : info->name = "value_changed";
2675 90 : info->eventType = GF_SG_EVENT_OUT;
2676 90 : info->fieldType = GF_SG_VRML_SFCOLOR;
2677 90 : info->far_ptr = & ((M_ColorInterpolator *) node)->value_changed;
2678 90 : return GF_OK;
2679 : default:
2680 0 : return GF_BAD_PARAM;
2681 : }
2682 576 : }
2683 :
2684 :
2685 : static s32 ColorInterpolator_get_field_index_by_name(char *name)
2686 : {
2687 216 : if (!strcmp("set_fraction", name)) return 0;
2688 96 : if (!strcmp("key", name)) return 1;
2689 72 : if (!strcmp("keyValue", name)) return 2;
2690 48 : if (!strcmp("value_changed", name)) return 3;
2691 0 : return -1;
2692 96 : }
2693 : static Bool ColorInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2694 : {
2695 0 : switch (FieldIndex) {
2696 : case 1:
2697 0 : *AType = 0;
2698 0 : *QType = 8;
2699 0 : *b_min = FLT2FIX(0);
2700 0 : *b_max = FLT2FIX(1);
2701 0 : return 1;
2702 : case 2:
2703 0 : *AType = 0;
2704 0 : *QType = 4;
2705 0 : *b_min = FLT2FIX(0);
2706 0 : *b_max = FLT2FIX(1);
2707 0 : return 1;
2708 : default:
2709 0 : return 0;
2710 : }
2711 0 : }
2712 :
2713 :
2714 :
2715 : GF_Node *ColorInterpolator_Create()
2716 : {
2717 : M_ColorInterpolator *p;
2718 324 : GF_SAFEALLOC(p, M_ColorInterpolator);
2719 108 : if(!p) return NULL;
2720 108 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ColorInterpolator);
2721 :
2722 : /*default field values*/
2723 108 : return (GF_Node *)p;
2724 108 : }
2725 :
2726 :
2727 : /*
2728 : CompositeTexture2D Node deletion
2729 : */
2730 :
2731 : static void CompositeTexture2D_Del(GF_Node *node)
2732 : {
2733 164 : M_CompositeTexture2D *p = (M_CompositeTexture2D *) node;
2734 82 : gf_node_unregister((GF_Node *) p->background, (GF_Node *) p);
2735 82 : gf_node_unregister((GF_Node *) p->viewport, (GF_Node *) p);
2736 82 : gf_sg_vrml_parent_destroy((GF_Node *) p);
2737 82 : gf_node_free((GF_Node *) p);
2738 82 : }
2739 :
2740 : static const u16 CompositeTexture2D_Def2All[] = { 2, 3, 4, 5, 6, 7};
2741 : static const u16 CompositeTexture2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
2742 : static const u16 CompositeTexture2D_Out2All[] = { 2, 3, 4, 5, 6};
2743 :
2744 : static u32 CompositeTexture2D_get_field_count(GF_Node *node, u8 IndexMode)
2745 : {
2746 134 : switch(IndexMode) {
2747 : case GF_SG_FIELD_CODING_IN:
2748 0 : return 7;
2749 : case GF_SG_FIELD_CODING_DEF:
2750 36 : return 6;
2751 : case GF_SG_FIELD_CODING_OUT:
2752 0 : return 5;
2753 : case GF_SG_FIELD_CODING_DYN:
2754 0 : return 0;
2755 : default:
2756 31 : return 8;
2757 : }
2758 67 : }
2759 :
2760 : static GF_Err CompositeTexture2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2761 : {
2762 226 : switch(IndexMode) {
2763 : case GF_SG_FIELD_CODING_IN:
2764 0 : *allField = CompositeTexture2D_In2All[inField];
2765 0 : return GF_OK;
2766 : case GF_SG_FIELD_CODING_DEF:
2767 113 : *allField = CompositeTexture2D_Def2All[inField];
2768 113 : return GF_OK;
2769 : case GF_SG_FIELD_CODING_OUT:
2770 0 : *allField = CompositeTexture2D_Out2All[inField];
2771 0 : return GF_OK;
2772 : default:
2773 0 : return GF_BAD_PARAM;
2774 : }
2775 113 : }
2776 : static GF_Err CompositeTexture2D_get_field(GF_Node *node, GF_FieldInfo *info)
2777 : {
2778 1404 : switch (info->fieldIndex) {
2779 : case 0:
2780 31 : info->name = "addChildren";
2781 31 : info->eventType = GF_SG_EVENT_IN;
2782 31 : info->on_event_in = ((M_CompositeTexture2D *)node)->on_addChildren;
2783 31 : info->fieldType = GF_SG_VRML_MFNODE;
2784 31 : info->NDTtype = NDT_SF2DNode;
2785 31 : info->far_ptr = & ((M_CompositeTexture2D *)node)->addChildren;
2786 31 : return GF_OK;
2787 : case 1:
2788 31 : info->name = "removeChildren";
2789 31 : info->eventType = GF_SG_EVENT_IN;
2790 31 : info->on_event_in = ((M_CompositeTexture2D *)node)->on_removeChildren;
2791 31 : info->fieldType = GF_SG_VRML_MFNODE;
2792 31 : info->NDTtype = NDT_SF2DNode;
2793 31 : info->far_ptr = & ((M_CompositeTexture2D *)node)->removeChildren;
2794 31 : return GF_OK;
2795 : case 2:
2796 141 : info->name = "children";
2797 141 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2798 141 : info->fieldType = GF_SG_VRML_MFNODE;
2799 141 : info->NDTtype = NDT_SF2DNode;
2800 141 : info->far_ptr = & ((M_CompositeTexture2D *)node)->children;
2801 141 : return GF_OK;
2802 : case 3:
2803 164 : info->name = "pixelWidth";
2804 164 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2805 164 : info->fieldType = GF_SG_VRML_SFINT32;
2806 164 : info->far_ptr = & ((M_CompositeTexture2D *) node)->pixelWidth;
2807 164 : return GF_OK;
2808 : case 4:
2809 164 : info->name = "pixelHeight";
2810 164 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2811 164 : info->fieldType = GF_SG_VRML_SFINT32;
2812 164 : info->far_ptr = & ((M_CompositeTexture2D *) node)->pixelHeight;
2813 164 : return GF_OK;
2814 : case 5:
2815 54 : info->name = "background";
2816 54 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2817 54 : info->fieldType = GF_SG_VRML_SFNODE;
2818 54 : info->NDTtype = NDT_SFBackground2DNode;
2819 54 : info->far_ptr = & ((M_CompositeTexture2D *)node)->background;
2820 54 : return GF_OK;
2821 : case 6:
2822 39 : info->name = "viewport";
2823 39 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2824 39 : info->fieldType = GF_SG_VRML_SFNODE;
2825 39 : info->NDTtype = NDT_SFViewportNode;
2826 39 : info->far_ptr = & ((M_CompositeTexture2D *)node)->viewport;
2827 39 : return GF_OK;
2828 : case 7:
2829 78 : info->name = "repeatSandT";
2830 78 : info->eventType = GF_SG_EVENT_FIELD;
2831 78 : info->fieldType = GF_SG_VRML_SFINT32;
2832 78 : info->far_ptr = & ((M_CompositeTexture2D *) node)->repeatSandT;
2833 78 : return GF_OK;
2834 : default:
2835 0 : return GF_BAD_PARAM;
2836 : }
2837 702 : }
2838 :
2839 :
2840 : static s32 CompositeTexture2D_get_field_index_by_name(char *name)
2841 : {
2842 282 : if (!strcmp("addChildren", name)) return 0;
2843 141 : if (!strcmp("removeChildren", name)) return 1;
2844 194 : if (!strcmp("children", name)) return 2;
2845 130 : if (!strcmp("pixelWidth", name)) return 3;
2846 88 : if (!strcmp("pixelHeight", name)) return 4;
2847 8 : if (!strcmp("background", name)) return 5;
2848 0 : if (!strcmp("viewport", name)) return 6;
2849 0 : if (!strcmp("repeatSandT", name)) return 7;
2850 0 : return -1;
2851 141 : }
2852 : static Bool CompositeTexture2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2853 : {
2854 0 : switch (FieldIndex) {
2855 : case 3:
2856 0 : *AType = 0;
2857 0 : *QType = 13;
2858 0 : *QT13_bits = 16;
2859 0 : *b_min = FLT2FIX(0);
2860 0 : *b_max = FIX_MAX;
2861 0 : return 1;
2862 : case 4:
2863 0 : *AType = 0;
2864 0 : *QType = 13;
2865 0 : *QT13_bits = 16;
2866 0 : *b_min = FLT2FIX(0);
2867 0 : *b_max = FIX_MAX;
2868 0 : return 1;
2869 : case 7:
2870 0 : *AType = 0;
2871 0 : *QType = 13;
2872 0 : *QT13_bits = 2;
2873 0 : *b_min = FLT2FIX(0);
2874 0 : *b_max = FLT2FIX(3);
2875 0 : return 1;
2876 : default:
2877 0 : return 0;
2878 : }
2879 0 : }
2880 :
2881 :
2882 :
2883 : GF_Node *CompositeTexture2D_Create()
2884 : {
2885 : M_CompositeTexture2D *p;
2886 246 : GF_SAFEALLOC(p, M_CompositeTexture2D);
2887 82 : if(!p) return NULL;
2888 82 : gf_node_setup((GF_Node *)p, TAG_MPEG4_CompositeTexture2D);
2889 82 : gf_sg_vrml_parent_setup((GF_Node *) p);
2890 :
2891 : /*default field values*/
2892 82 : p->pixelWidth = -1;
2893 82 : p->pixelHeight = -1;
2894 82 : p->repeatSandT = 3;
2895 82 : return (GF_Node *)p;
2896 82 : }
2897 :
2898 :
2899 : /*
2900 : CompositeTexture3D Node deletion
2901 : */
2902 :
2903 : static void CompositeTexture3D_Del(GF_Node *node)
2904 : {
2905 72 : M_CompositeTexture3D *p = (M_CompositeTexture3D *) node;
2906 36 : gf_node_unregister((GF_Node *) p->background, (GF_Node *) p);
2907 36 : gf_node_unregister((GF_Node *) p->fog, (GF_Node *) p);
2908 36 : gf_node_unregister((GF_Node *) p->navigationInfo, (GF_Node *) p);
2909 36 : gf_node_unregister((GF_Node *) p->viewpoint, (GF_Node *) p);
2910 36 : gf_sg_vrml_parent_destroy((GF_Node *) p);
2911 36 : gf_node_free((GF_Node *) p);
2912 36 : }
2913 :
2914 : static const u16 CompositeTexture3D_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10};
2915 : static const u16 CompositeTexture3D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
2916 : static const u16 CompositeTexture3D_Out2All[] = { 2, 3, 4, 5, 6, 7, 8};
2917 :
2918 : static u32 CompositeTexture3D_get_field_count(GF_Node *node, u8 IndexMode)
2919 : {
2920 64 : switch(IndexMode) {
2921 : case GF_SG_FIELD_CODING_IN:
2922 0 : return 9;
2923 : case GF_SG_FIELD_CODING_DEF:
2924 18 : return 9;
2925 : case GF_SG_FIELD_CODING_OUT:
2926 0 : return 7;
2927 : case GF_SG_FIELD_CODING_DYN:
2928 0 : return 0;
2929 : default:
2930 14 : return 11;
2931 : }
2932 32 : }
2933 :
2934 : static GF_Err CompositeTexture3D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2935 : {
2936 132 : switch(IndexMode) {
2937 : case GF_SG_FIELD_CODING_IN:
2938 0 : *allField = CompositeTexture3D_In2All[inField];
2939 0 : return GF_OK;
2940 : case GF_SG_FIELD_CODING_DEF:
2941 66 : *allField = CompositeTexture3D_Def2All[inField];
2942 66 : return GF_OK;
2943 : case GF_SG_FIELD_CODING_OUT:
2944 0 : *allField = CompositeTexture3D_Out2All[inField];
2945 0 : return GF_OK;
2946 : default:
2947 0 : return GF_BAD_PARAM;
2948 : }
2949 66 : }
2950 : static GF_Err CompositeTexture3D_get_field(GF_Node *node, GF_FieldInfo *info)
2951 : {
2952 704 : switch (info->fieldIndex) {
2953 : case 0:
2954 14 : info->name = "addChildren";
2955 14 : info->eventType = GF_SG_EVENT_IN;
2956 14 : info->on_event_in = ((M_CompositeTexture3D *)node)->on_addChildren;
2957 14 : info->fieldType = GF_SG_VRML_MFNODE;
2958 14 : info->NDTtype = NDT_SF3DNode;
2959 14 : info->far_ptr = & ((M_CompositeTexture3D *)node)->addChildren;
2960 14 : return GF_OK;
2961 : case 1:
2962 14 : info->name = "removeChildren";
2963 14 : info->eventType = GF_SG_EVENT_IN;
2964 14 : info->on_event_in = ((M_CompositeTexture3D *)node)->on_removeChildren;
2965 14 : info->fieldType = GF_SG_VRML_MFNODE;
2966 14 : info->NDTtype = NDT_SF3DNode;
2967 14 : info->far_ptr = & ((M_CompositeTexture3D *)node)->removeChildren;
2968 14 : return GF_OK;
2969 : case 2:
2970 48 : info->name = "children";
2971 48 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2972 48 : info->fieldType = GF_SG_VRML_MFNODE;
2973 48 : info->NDTtype = NDT_SF3DNode;
2974 48 : info->far_ptr = & ((M_CompositeTexture3D *)node)->children;
2975 48 : return GF_OK;
2976 : case 3:
2977 66 : info->name = "pixelWidth";
2978 66 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2979 66 : info->fieldType = GF_SG_VRML_SFINT32;
2980 66 : info->far_ptr = & ((M_CompositeTexture3D *) node)->pixelWidth;
2981 66 : return GF_OK;
2982 : case 4:
2983 66 : info->name = "pixelHeight";
2984 66 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2985 66 : info->fieldType = GF_SG_VRML_SFINT32;
2986 66 : info->far_ptr = & ((M_CompositeTexture3D *) node)->pixelHeight;
2987 66 : return GF_OK;
2988 : case 5:
2989 18 : info->name = "background";
2990 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2991 18 : info->fieldType = GF_SG_VRML_SFNODE;
2992 18 : info->NDTtype = NDT_SFBackground3DNode;
2993 18 : info->far_ptr = & ((M_CompositeTexture3D *)node)->background;
2994 18 : return GF_OK;
2995 : case 6:
2996 18 : info->name = "fog";
2997 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2998 18 : info->fieldType = GF_SG_VRML_SFNODE;
2999 18 : info->NDTtype = NDT_SFFogNode;
3000 18 : info->far_ptr = & ((M_CompositeTexture3D *)node)->fog;
3001 18 : return GF_OK;
3002 : case 7:
3003 18 : info->name = "navigationInfo";
3004 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3005 18 : info->fieldType = GF_SG_VRML_SFNODE;
3006 18 : info->NDTtype = NDT_SFNavigationInfoNode;
3007 18 : info->far_ptr = & ((M_CompositeTexture3D *)node)->navigationInfo;
3008 18 : return GF_OK;
3009 : case 8:
3010 18 : info->name = "viewpoint";
3011 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3012 18 : info->fieldType = GF_SG_VRML_SFNODE;
3013 18 : info->NDTtype = NDT_SFViewpointNode;
3014 18 : info->far_ptr = & ((M_CompositeTexture3D *)node)->viewpoint;
3015 18 : return GF_OK;
3016 : case 9:
3017 36 : info->name = "repeatS";
3018 36 : info->eventType = GF_SG_EVENT_FIELD;
3019 36 : info->fieldType = GF_SG_VRML_SFBOOL;
3020 36 : info->far_ptr = & ((M_CompositeTexture3D *) node)->repeatS;
3021 36 : return GF_OK;
3022 : case 10:
3023 36 : info->name = "repeatT";
3024 36 : info->eventType = GF_SG_EVENT_FIELD;
3025 36 : info->fieldType = GF_SG_VRML_SFBOOL;
3026 36 : info->far_ptr = & ((M_CompositeTexture3D *) node)->repeatT;
3027 36 : return GF_OK;
3028 : default:
3029 0 : return GF_BAD_PARAM;
3030 : }
3031 352 : }
3032 :
3033 :
3034 : static s32 CompositeTexture3D_get_field_index_by_name(char *name)
3035 : {
3036 48 : if (!strcmp("addChildren", name)) return 0;
3037 24 : if (!strcmp("removeChildren", name)) return 1;
3038 32 : if (!strcmp("children", name)) return 2;
3039 24 : if (!strcmp("pixelWidth", name)) return 3;
3040 16 : if (!strcmp("pixelHeight", name)) return 4;
3041 0 : if (!strcmp("background", name)) return 5;
3042 0 : if (!strcmp("fog", name)) return 6;
3043 0 : if (!strcmp("navigationInfo", name)) return 7;
3044 0 : if (!strcmp("viewpoint", name)) return 8;
3045 0 : if (!strcmp("repeatS", name)) return 9;
3046 0 : if (!strcmp("repeatT", name)) return 10;
3047 0 : return -1;
3048 24 : }
3049 : static Bool CompositeTexture3D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3050 : {
3051 0 : switch (FieldIndex) {
3052 : case 3:
3053 0 : *AType = 0;
3054 0 : *QType = 13;
3055 0 : *QT13_bits = 16;
3056 0 : *b_min = FLT2FIX(0);
3057 0 : *b_max = FIX_MAX;
3058 0 : return 1;
3059 : case 4:
3060 0 : *AType = 0;
3061 0 : *QType = 13;
3062 0 : *QT13_bits = 16;
3063 0 : *b_min = FLT2FIX(0);
3064 0 : *b_max = FIX_MAX;
3065 0 : return 1;
3066 : default:
3067 0 : return 0;
3068 : }
3069 0 : }
3070 :
3071 :
3072 :
3073 : GF_Node *CompositeTexture3D_Create()
3074 : {
3075 : M_CompositeTexture3D *p;
3076 108 : GF_SAFEALLOC(p, M_CompositeTexture3D);
3077 36 : if(!p) return NULL;
3078 36 : gf_node_setup((GF_Node *)p, TAG_MPEG4_CompositeTexture3D);
3079 36 : gf_sg_vrml_parent_setup((GF_Node *) p);
3080 :
3081 : /*default field values*/
3082 36 : p->pixelWidth = -1;
3083 36 : p->pixelHeight = -1;
3084 36 : p->repeatS = 1;
3085 36 : p->repeatT = 1;
3086 36 : return (GF_Node *)p;
3087 36 : }
3088 :
3089 :
3090 : /*
3091 : Conditional Node deletion
3092 : */
3093 :
3094 : static void Conditional_Del(GF_Node *node)
3095 : {
3096 17718 : M_Conditional *p = (M_Conditional *) node;
3097 8859 : gf_sg_sfcommand_del(p->buffer);
3098 8859 : gf_node_free((GF_Node *) p);
3099 8859 : }
3100 :
3101 : static const u16 Conditional_Def2All[] = { 2};
3102 : static const u16 Conditional_In2All[] = { 0, 1, 2};
3103 : static const u16 Conditional_Out2All[] = { 2, 3};
3104 :
3105 : static u32 Conditional_get_field_count(GF_Node *node, u8 IndexMode)
3106 : {
3107 24310 : switch(IndexMode) {
3108 : case GF_SG_FIELD_CODING_IN:
3109 4131 : return 3;
3110 : case GF_SG_FIELD_CODING_DEF:
3111 4050 : return 1;
3112 : case GF_SG_FIELD_CODING_OUT:
3113 0 : return 2;
3114 : case GF_SG_FIELD_CODING_DYN:
3115 0 : return 0;
3116 : default:
3117 3974 : return 4;
3118 : }
3119 12155 : }
3120 :
3121 : static GF_Err Conditional_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3122 : {
3123 13206 : switch(IndexMode) {
3124 : case GF_SG_FIELD_CODING_IN:
3125 3459 : *allField = Conditional_In2All[inField];
3126 3459 : return GF_OK;
3127 : case GF_SG_FIELD_CODING_DEF:
3128 3144 : *allField = Conditional_Def2All[inField];
3129 3144 : return GF_OK;
3130 : case GF_SG_FIELD_CODING_OUT:
3131 0 : *allField = Conditional_Out2All[inField];
3132 0 : return GF_OK;
3133 : default:
3134 0 : return GF_BAD_PARAM;
3135 : }
3136 6603 : }
3137 : static GF_Err Conditional_get_field(GF_Node *node, GF_FieldInfo *info)
3138 : {
3139 58234 : switch (info->fieldIndex) {
3140 : case 0:
3141 6619 : info->name = "activate";
3142 6619 : info->eventType = GF_SG_EVENT_IN;
3143 6619 : info->on_event_in = ((M_Conditional *)node)->on_activate;
3144 6619 : info->fieldType = GF_SG_VRML_SFBOOL;
3145 6619 : info->far_ptr = & ((M_Conditional *) node)->activate;
3146 6619 : return GF_OK;
3147 : case 1:
3148 4939 : info->name = "reverseActivate";
3149 4939 : info->eventType = GF_SG_EVENT_IN;
3150 4939 : info->on_event_in = ((M_Conditional *)node)->on_reverseActivate;
3151 4939 : info->fieldType = GF_SG_VRML_SFBOOL;
3152 4939 : info->far_ptr = & ((M_Conditional *) node)->reverseActivate;
3153 4939 : return GF_OK;
3154 : case 2:
3155 13648 : info->name = "buffer";
3156 13648 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3157 13648 : info->fieldType = GF_SG_VRML_SFCOMMANDBUFFER;
3158 13648 : info->far_ptr = & ((M_Conditional *) node)->buffer;
3159 13648 : return GF_OK;
3160 : case 3:
3161 3911 : info->name = "isActive";
3162 3911 : info->eventType = GF_SG_EVENT_OUT;
3163 3911 : info->fieldType = GF_SG_VRML_SFBOOL;
3164 3911 : info->far_ptr = & ((M_Conditional *) node)->isActive;
3165 3911 : return GF_OK;
3166 : default:
3167 0 : return GF_BAD_PARAM;
3168 : }
3169 29117 : }
3170 :
3171 :
3172 : static s32 Conditional_get_field_index_by_name(char *name)
3173 : {
3174 8684 : if (!strcmp("activate", name)) return 0;
3175 2828 : if (!strcmp("reverseActivate", name)) return 1;
3176 3624 : if (!strcmp("buffer", name)) return 2;
3177 0 : if (!strcmp("isActive", name)) return 3;
3178 0 : return -1;
3179 3668 : }
3180 : static Bool Conditional_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3181 : {
3182 : switch (FieldIndex) {
3183 : default:
3184 0 : return 0;
3185 : }
3186 : }
3187 :
3188 :
3189 :
3190 : GF_Node *Conditional_Create()
3191 : {
3192 : M_Conditional *p;
3193 26577 : GF_SAFEALLOC(p, M_Conditional);
3194 8859 : if(!p) return NULL;
3195 8859 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Conditional);
3196 8859 : p->buffer.commandList = gf_list_new();
3197 :
3198 : /*default field values*/
3199 8859 : return (GF_Node *)p;
3200 8859 : }
3201 :
3202 :
3203 : /*
3204 : Cone Node deletion
3205 : */
3206 :
3207 : static void Cone_Del(GF_Node *node)
3208 : {
3209 216 : M_Cone *p = (M_Cone *) node;
3210 108 : gf_node_free((GF_Node *) p);
3211 108 : }
3212 :
3213 : static const u16 Cone_Def2All[] = { 0, 1, 2, 3};
3214 :
3215 : static u32 Cone_get_field_count(GF_Node *node, u8 IndexMode)
3216 : {
3217 192 : switch(IndexMode) {
3218 : case GF_SG_FIELD_CODING_IN:
3219 0 : return 0;
3220 : case GF_SG_FIELD_CODING_DEF:
3221 54 : return 4;
3222 : case GF_SG_FIELD_CODING_OUT:
3223 0 : return 0;
3224 : case GF_SG_FIELD_CODING_DYN:
3225 0 : return 0;
3226 : default:
3227 42 : return 4;
3228 : }
3229 96 : }
3230 :
3231 : static GF_Err Cone_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3232 : {
3233 246 : switch(IndexMode) {
3234 : case GF_SG_FIELD_CODING_DEF:
3235 123 : *allField = Cone_Def2All[inField];
3236 123 : return GF_OK;
3237 : default:
3238 0 : return GF_BAD_PARAM;
3239 : }
3240 123 : }
3241 : static GF_Err Cone_get_field(GF_Node *node, GF_FieldInfo *info)
3242 : {
3243 1314 : switch (info->fieldIndex) {
3244 : case 0:
3245 198 : info->name = "bottomRadius";
3246 198 : info->eventType = GF_SG_EVENT_FIELD;
3247 198 : info->fieldType = GF_SG_VRML_SFFLOAT;
3248 198 : info->far_ptr = & ((M_Cone *) node)->bottomRadius;
3249 198 : return GF_OK;
3250 : case 1:
3251 198 : info->name = "height";
3252 198 : info->eventType = GF_SG_EVENT_FIELD;
3253 198 : info->fieldType = GF_SG_VRML_SFFLOAT;
3254 198 : info->far_ptr = & ((M_Cone *) node)->height;
3255 198 : return GF_OK;
3256 : case 2:
3257 108 : info->name = "side";
3258 108 : info->eventType = GF_SG_EVENT_FIELD;
3259 108 : info->fieldType = GF_SG_VRML_SFBOOL;
3260 108 : info->far_ptr = & ((M_Cone *) node)->side;
3261 108 : return GF_OK;
3262 : case 3:
3263 153 : info->name = "bottom";
3264 153 : info->eventType = GF_SG_EVENT_FIELD;
3265 153 : info->fieldType = GF_SG_VRML_SFBOOL;
3266 153 : info->far_ptr = & ((M_Cone *) node)->bottom;
3267 153 : return GF_OK;
3268 : default:
3269 0 : return GF_BAD_PARAM;
3270 : }
3271 657 : }
3272 :
3273 :
3274 : static s32 Cone_get_field_index_by_name(char *name)
3275 : {
3276 144 : if (!strcmp("bottomRadius", name)) return 0;
3277 60 : if (!strcmp("height", name)) return 1;
3278 12 : if (!strcmp("side", name)) return 2;
3279 24 : if (!strcmp("bottom", name)) return 3;
3280 0 : return -1;
3281 60 : }
3282 : static Bool Cone_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3283 : {
3284 0 : switch (FieldIndex) {
3285 : case 0:
3286 0 : *AType = 0;
3287 0 : *QType = 11;
3288 0 : *b_min = FLT2FIX(0);
3289 0 : *b_max = FIX_MAX;
3290 0 : return 1;
3291 : case 1:
3292 0 : *AType = 0;
3293 0 : *QType = 11;
3294 0 : *b_min = FLT2FIX(0);
3295 0 : *b_max = FIX_MAX;
3296 0 : return 1;
3297 : default:
3298 0 : return 0;
3299 : }
3300 0 : }
3301 :
3302 :
3303 :
3304 : GF_Node *Cone_Create()
3305 : {
3306 : M_Cone *p;
3307 324 : GF_SAFEALLOC(p, M_Cone);
3308 108 : if(!p) return NULL;
3309 108 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Cone);
3310 :
3311 : /*default field values*/
3312 108 : p->bottomRadius = FLT2FIX(1);
3313 108 : p->height = FLT2FIX(2);
3314 108 : p->side = 1;
3315 108 : p->bottom = 1;
3316 108 : return (GF_Node *)p;
3317 108 : }
3318 :
3319 :
3320 : /*
3321 : Coordinate Node deletion
3322 : */
3323 :
3324 : static void Coordinate_Del(GF_Node *node)
3325 : {
3326 170 : M_Coordinate *p = (M_Coordinate *) node;
3327 85 : gf_sg_mfvec3f_del(p->point);
3328 85 : gf_node_free((GF_Node *) p);
3329 85 : }
3330 :
3331 : static const u16 Coordinate_Def2All[] = { 0};
3332 : static const u16 Coordinate_In2All[] = { 0};
3333 : static const u16 Coordinate_Out2All[] = { 0};
3334 : static const u16 Coordinate_Dyn2All[] = { 0};
3335 :
3336 : static u32 Coordinate_get_field_count(GF_Node *node, u8 IndexMode)
3337 : {
3338 146 : switch(IndexMode) {
3339 : case GF_SG_FIELD_CODING_IN:
3340 0 : return 1;
3341 : case GF_SG_FIELD_CODING_DEF:
3342 36 : return 1;
3343 : case GF_SG_FIELD_CODING_OUT:
3344 0 : return 1;
3345 : case GF_SG_FIELD_CODING_DYN:
3346 0 : return 1;
3347 : default:
3348 37 : return 1;
3349 : }
3350 73 : }
3351 :
3352 : static GF_Err Coordinate_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3353 : {
3354 56 : switch(IndexMode) {
3355 : case GF_SG_FIELD_CODING_IN:
3356 0 : *allField = Coordinate_In2All[inField];
3357 0 : return GF_OK;
3358 : case GF_SG_FIELD_CODING_DEF:
3359 28 : *allField = Coordinate_Def2All[inField];
3360 28 : return GF_OK;
3361 : case GF_SG_FIELD_CODING_OUT:
3362 0 : *allField = Coordinate_Out2All[inField];
3363 0 : return GF_OK;
3364 : case GF_SG_FIELD_CODING_DYN:
3365 0 : *allField = Coordinate_Dyn2All[inField];
3366 0 : return GF_OK;
3367 : default:
3368 0 : return GF_BAD_PARAM;
3369 : }
3370 28 : }
3371 : static GF_Err Coordinate_get_field(GF_Node *node, GF_FieldInfo *info)
3372 : {
3373 300 : switch (info->fieldIndex) {
3374 : case 0:
3375 150 : info->name = "point";
3376 150 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3377 150 : info->fieldType = GF_SG_VRML_MFVEC3F;
3378 150 : info->far_ptr = & ((M_Coordinate *) node)->point;
3379 150 : return GF_OK;
3380 : default:
3381 0 : return GF_BAD_PARAM;
3382 : }
3383 150 : }
3384 :
3385 :
3386 : static s32 Coordinate_get_field_index_by_name(char *name)
3387 : {
3388 48 : if (!strcmp("point", name)) return 0;
3389 0 : return -1;
3390 16 : }
3391 : static Bool Coordinate_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3392 : {
3393 0 : switch (FieldIndex) {
3394 : case 0:
3395 0 : *AType = 1;
3396 0 : *QType = 1;
3397 0 : *b_min = FIX_MIN;
3398 0 : *b_max = FIX_MAX;
3399 0 : return 1;
3400 : default:
3401 0 : return 0;
3402 : }
3403 0 : }
3404 :
3405 :
3406 :
3407 : GF_Node *Coordinate_Create()
3408 : {
3409 : M_Coordinate *p;
3410 255 : GF_SAFEALLOC(p, M_Coordinate);
3411 85 : if(!p) return NULL;
3412 85 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Coordinate);
3413 :
3414 : /*default field values*/
3415 85 : return (GF_Node *)p;
3416 85 : }
3417 :
3418 :
3419 : /*
3420 : Coordinate2D Node deletion
3421 : */
3422 :
3423 : static void Coordinate2D_Del(GF_Node *node)
3424 : {
3425 8268 : M_Coordinate2D *p = (M_Coordinate2D *) node;
3426 4134 : gf_sg_mfvec2f_del(p->point);
3427 4134 : gf_node_free((GF_Node *) p);
3428 4134 : }
3429 :
3430 : static const u16 Coordinate2D_Def2All[] = { 0};
3431 : static const u16 Coordinate2D_In2All[] = { 0};
3432 : static const u16 Coordinate2D_Out2All[] = { 0};
3433 : static const u16 Coordinate2D_Dyn2All[] = { 0};
3434 :
3435 : static u32 Coordinate2D_get_field_count(GF_Node *node, u8 IndexMode)
3436 : {
3437 7856 : switch(IndexMode) {
3438 : case GF_SG_FIELD_CODING_IN:
3439 63 : return 1;
3440 : case GF_SG_FIELD_CODING_DEF:
3441 2002 : return 1;
3442 : case GF_SG_FIELD_CODING_OUT:
3443 0 : return 1;
3444 : case GF_SG_FIELD_CODING_DYN:
3445 0 : return 1;
3446 : default:
3447 1863 : return 1;
3448 : }
3449 3928 : }
3450 :
3451 : static GF_Err Coordinate2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3452 : {
3453 2600 : switch(IndexMode) {
3454 : case GF_SG_FIELD_CODING_IN:
3455 49 : *allField = Coordinate2D_In2All[inField];
3456 49 : return GF_OK;
3457 : case GF_SG_FIELD_CODING_DEF:
3458 1251 : *allField = Coordinate2D_Def2All[inField];
3459 1251 : return GF_OK;
3460 : case GF_SG_FIELD_CODING_OUT:
3461 0 : *allField = Coordinate2D_Out2All[inField];
3462 0 : return GF_OK;
3463 : case GF_SG_FIELD_CODING_DYN:
3464 0 : *allField = Coordinate2D_Dyn2All[inField];
3465 0 : return GF_OK;
3466 : default:
3467 0 : return GF_BAD_PARAM;
3468 : }
3469 1300 : }
3470 : static GF_Err Coordinate2D_get_field(GF_Node *node, GF_FieldInfo *info)
3471 : {
3472 16366 : switch (info->fieldIndex) {
3473 : case 0:
3474 8183 : info->name = "point";
3475 8183 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3476 8183 : info->fieldType = GF_SG_VRML_MFVEC2F;
3477 8183 : info->far_ptr = & ((M_Coordinate2D *) node)->point;
3478 8183 : return GF_OK;
3479 : default:
3480 0 : return GF_BAD_PARAM;
3481 : }
3482 8183 : }
3483 :
3484 :
3485 : static s32 Coordinate2D_get_field_index_by_name(char *name)
3486 : {
3487 4320 : if (!strcmp("point", name)) return 0;
3488 0 : return -1;
3489 1440 : }
3490 : static Bool Coordinate2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3491 : {
3492 588 : switch (FieldIndex) {
3493 : case 0:
3494 294 : *AType = 2;
3495 294 : *QType = 2;
3496 294 : *b_min = FIX_MIN;
3497 294 : *b_max = FIX_MAX;
3498 294 : return 1;
3499 : default:
3500 0 : return 0;
3501 : }
3502 294 : }
3503 :
3504 :
3505 :
3506 : GF_Node *Coordinate2D_Create()
3507 : {
3508 : M_Coordinate2D *p;
3509 12402 : GF_SAFEALLOC(p, M_Coordinate2D);
3510 4134 : if(!p) return NULL;
3511 4134 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Coordinate2D);
3512 :
3513 : /*default field values*/
3514 4134 : return (GF_Node *)p;
3515 4134 : }
3516 :
3517 :
3518 : /*
3519 : CoordinateInterpolator Node deletion
3520 : */
3521 :
3522 : static void CoordinateInterpolator_Del(GF_Node *node)
3523 : {
3524 0 : M_CoordinateInterpolator *p = (M_CoordinateInterpolator *) node;
3525 0 : gf_sg_mffloat_del(p->key);
3526 0 : gf_sg_mfvec3f_del(p->keyValue);
3527 0 : gf_sg_mfvec3f_del(p->value_changed);
3528 0 : gf_node_free((GF_Node *) p);
3529 0 : }
3530 :
3531 : static const u16 CoordinateInterpolator_Def2All[] = { 1, 2};
3532 : static const u16 CoordinateInterpolator_In2All[] = { 0, 1, 2};
3533 : static const u16 CoordinateInterpolator_Out2All[] = { 1, 2, 3};
3534 :
3535 : static u32 CoordinateInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
3536 : {
3537 0 : switch(IndexMode) {
3538 : case GF_SG_FIELD_CODING_IN:
3539 0 : return 3;
3540 : case GF_SG_FIELD_CODING_DEF:
3541 0 : return 2;
3542 : case GF_SG_FIELD_CODING_OUT:
3543 0 : return 3;
3544 : case GF_SG_FIELD_CODING_DYN:
3545 0 : return 0;
3546 : default:
3547 0 : return 4;
3548 : }
3549 0 : }
3550 :
3551 : static GF_Err CoordinateInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3552 : {
3553 0 : switch(IndexMode) {
3554 : case GF_SG_FIELD_CODING_IN:
3555 0 : *allField = CoordinateInterpolator_In2All[inField];
3556 0 : return GF_OK;
3557 : case GF_SG_FIELD_CODING_DEF:
3558 0 : *allField = CoordinateInterpolator_Def2All[inField];
3559 0 : return GF_OK;
3560 : case GF_SG_FIELD_CODING_OUT:
3561 0 : *allField = CoordinateInterpolator_Out2All[inField];
3562 0 : return GF_OK;
3563 : default:
3564 0 : return GF_BAD_PARAM;
3565 : }
3566 0 : }
3567 : static GF_Err CoordinateInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
3568 : {
3569 0 : switch (info->fieldIndex) {
3570 : case 0:
3571 0 : info->name = "set_fraction";
3572 0 : info->eventType = GF_SG_EVENT_IN;
3573 0 : info->on_event_in = ((M_CoordinateInterpolator *)node)->on_set_fraction;
3574 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
3575 0 : info->far_ptr = & ((M_CoordinateInterpolator *) node)->set_fraction;
3576 0 : return GF_OK;
3577 : case 1:
3578 0 : info->name = "key";
3579 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3580 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
3581 0 : info->far_ptr = & ((M_CoordinateInterpolator *) node)->key;
3582 0 : return GF_OK;
3583 : case 2:
3584 0 : info->name = "keyValue";
3585 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3586 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
3587 0 : info->far_ptr = & ((M_CoordinateInterpolator *) node)->keyValue;
3588 0 : return GF_OK;
3589 : case 3:
3590 0 : info->name = "value_changed";
3591 0 : info->eventType = GF_SG_EVENT_OUT;
3592 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
3593 0 : info->far_ptr = & ((M_CoordinateInterpolator *) node)->value_changed;
3594 0 : return GF_OK;
3595 : default:
3596 0 : return GF_BAD_PARAM;
3597 : }
3598 0 : }
3599 :
3600 :
3601 : static s32 CoordinateInterpolator_get_field_index_by_name(char *name)
3602 : {
3603 0 : if (!strcmp("set_fraction", name)) return 0;
3604 0 : if (!strcmp("key", name)) return 1;
3605 0 : if (!strcmp("keyValue", name)) return 2;
3606 0 : if (!strcmp("value_changed", name)) return 3;
3607 0 : return -1;
3608 0 : }
3609 : static Bool CoordinateInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3610 : {
3611 0 : switch (FieldIndex) {
3612 : case 1:
3613 0 : *AType = 0;
3614 0 : *QType = 8;
3615 0 : *b_min = FLT2FIX(0);
3616 0 : *b_max = FLT2FIX(1);
3617 0 : return 1;
3618 : case 2:
3619 0 : *AType = 0;
3620 0 : *QType = 1;
3621 0 : *b_min = FIX_MIN;
3622 0 : *b_max = FIX_MAX;
3623 0 : return 1;
3624 : default:
3625 0 : return 0;
3626 : }
3627 0 : }
3628 :
3629 :
3630 :
3631 : GF_Node *CoordinateInterpolator_Create()
3632 : {
3633 : M_CoordinateInterpolator *p;
3634 0 : GF_SAFEALLOC(p, M_CoordinateInterpolator);
3635 0 : if(!p) return NULL;
3636 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_CoordinateInterpolator);
3637 :
3638 : /*default field values*/
3639 0 : return (GF_Node *)p;
3640 0 : }
3641 :
3642 :
3643 : /*
3644 : CoordinateInterpolator2D Node deletion
3645 : */
3646 :
3647 : static void CoordinateInterpolator2D_Del(GF_Node *node)
3648 : {
3649 72 : M_CoordinateInterpolator2D *p = (M_CoordinateInterpolator2D *) node;
3650 36 : gf_sg_mffloat_del(p->key);
3651 36 : gf_sg_mfvec2f_del(p->keyValue);
3652 36 : gf_sg_mfvec2f_del(p->value_changed);
3653 36 : gf_node_free((GF_Node *) p);
3654 36 : }
3655 :
3656 : static const u16 CoordinateInterpolator2D_Def2All[] = { 1, 2};
3657 : static const u16 CoordinateInterpolator2D_In2All[] = { 0, 1, 2};
3658 : static const u16 CoordinateInterpolator2D_Out2All[] = { 1, 2, 3};
3659 :
3660 : static u32 CoordinateInterpolator2D_get_field_count(GF_Node *node, u8 IndexMode)
3661 : {
3662 136 : switch(IndexMode) {
3663 : case GF_SG_FIELD_CODING_IN:
3664 18 : return 3;
3665 : case GF_SG_FIELD_CODING_DEF:
3666 18 : return 2;
3667 : case GF_SG_FIELD_CODING_OUT:
3668 18 : return 3;
3669 : case GF_SG_FIELD_CODING_DYN:
3670 0 : return 0;
3671 : default:
3672 14 : return 4;
3673 : }
3674 68 : }
3675 :
3676 : static GF_Err CoordinateInterpolator2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3677 : {
3678 128 : switch(IndexMode) {
3679 : case GF_SG_FIELD_CODING_IN:
3680 14 : *allField = CoordinateInterpolator2D_In2All[inField];
3681 14 : return GF_OK;
3682 : case GF_SG_FIELD_CODING_DEF:
3683 28 : *allField = CoordinateInterpolator2D_Def2All[inField];
3684 28 : return GF_OK;
3685 : case GF_SG_FIELD_CODING_OUT:
3686 22 : *allField = CoordinateInterpolator2D_Out2All[inField];
3687 22 : return GF_OK;
3688 : default:
3689 0 : return GF_BAD_PARAM;
3690 : }
3691 64 : }
3692 : static GF_Err CoordinateInterpolator2D_get_field(GF_Node *node, GF_FieldInfo *info)
3693 : {
3694 384 : switch (info->fieldIndex) {
3695 : case 0:
3696 30 : info->name = "set_fraction";
3697 30 : info->eventType = GF_SG_EVENT_IN;
3698 30 : info->on_event_in = ((M_CoordinateInterpolator2D *)node)->on_set_fraction;
3699 30 : info->fieldType = GF_SG_VRML_SFFLOAT;
3700 30 : info->far_ptr = & ((M_CoordinateInterpolator2D *) node)->set_fraction;
3701 30 : return GF_OK;
3702 : case 1:
3703 66 : info->name = "key";
3704 66 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3705 66 : info->fieldType = GF_SG_VRML_MFFLOAT;
3706 66 : info->far_ptr = & ((M_CoordinateInterpolator2D *) node)->key;
3707 66 : return GF_OK;
3708 : case 2:
3709 66 : info->name = "keyValue";
3710 66 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3711 66 : info->fieldType = GF_SG_VRML_MFVEC2F;
3712 66 : info->far_ptr = & ((M_CoordinateInterpolator2D *) node)->keyValue;
3713 66 : return GF_OK;
3714 : case 3:
3715 30 : info->name = "value_changed";
3716 30 : info->eventType = GF_SG_EVENT_OUT;
3717 30 : info->fieldType = GF_SG_VRML_MFVEC2F;
3718 30 : info->far_ptr = & ((M_CoordinateInterpolator2D *) node)->value_changed;
3719 30 : return GF_OK;
3720 : default:
3721 0 : return GF_BAD_PARAM;
3722 : }
3723 192 : }
3724 :
3725 :
3726 : static s32 CoordinateInterpolator2D_get_field_index_by_name(char *name)
3727 : {
3728 72 : if (!strcmp("set_fraction", name)) return 0;
3729 32 : if (!strcmp("key", name)) return 1;
3730 24 : if (!strcmp("keyValue", name)) return 2;
3731 16 : if (!strcmp("value_changed", name)) return 3;
3732 0 : return -1;
3733 32 : }
3734 : static Bool CoordinateInterpolator2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3735 : {
3736 0 : switch (FieldIndex) {
3737 : case 1:
3738 0 : *AType = 0;
3739 0 : *QType = 8;
3740 0 : *b_min = FLT2FIX(0);
3741 0 : *b_max = FLT2FIX(1);
3742 0 : return 1;
3743 : case 2:
3744 0 : *AType = 0;
3745 0 : *QType = 2;
3746 0 : *b_min = FIX_MIN;
3747 0 : *b_max = FIX_MAX;
3748 0 : return 1;
3749 : default:
3750 0 : return 0;
3751 : }
3752 0 : }
3753 :
3754 :
3755 :
3756 : GF_Node *CoordinateInterpolator2D_Create()
3757 : {
3758 : M_CoordinateInterpolator2D *p;
3759 108 : GF_SAFEALLOC(p, M_CoordinateInterpolator2D);
3760 36 : if(!p) return NULL;
3761 36 : gf_node_setup((GF_Node *)p, TAG_MPEG4_CoordinateInterpolator2D);
3762 :
3763 : /*default field values*/
3764 36 : return (GF_Node *)p;
3765 36 : }
3766 :
3767 :
3768 : /*
3769 : Curve2D Node deletion
3770 : */
3771 :
3772 : static void Curve2D_Del(GF_Node *node)
3773 : {
3774 3480 : M_Curve2D *p = (M_Curve2D *) node;
3775 1740 : gf_node_unregister((GF_Node *) p->point, (GF_Node *) p);
3776 1740 : gf_sg_mfint32_del(p->type);
3777 1740 : gf_node_free((GF_Node *) p);
3778 1740 : }
3779 :
3780 : static const u16 Curve2D_Def2All[] = { 0, 1, 2};
3781 : static const u16 Curve2D_In2All[] = { 0, 1, 2};
3782 : static const u16 Curve2D_Out2All[] = { 0, 1, 2};
3783 : static const u16 Curve2D_Dyn2All[] = { 1};
3784 :
3785 : static u32 Curve2D_get_field_count(GF_Node *node, u8 IndexMode)
3786 : {
3787 3398 : switch(IndexMode) {
3788 : case GF_SG_FIELD_CODING_IN:
3789 0 : return 3;
3790 : case GF_SG_FIELD_CODING_DEF:
3791 1056 : return 3;
3792 : case GF_SG_FIELD_CODING_OUT:
3793 0 : return 3;
3794 : case GF_SG_FIELD_CODING_DYN:
3795 0 : return 1;
3796 : default:
3797 643 : return 3;
3798 : }
3799 1699 : }
3800 :
3801 : static GF_Err Curve2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3802 : {
3803 2950 : switch(IndexMode) {
3804 : case GF_SG_FIELD_CODING_IN:
3805 0 : *allField = Curve2D_In2All[inField];
3806 0 : return GF_OK;
3807 : case GF_SG_FIELD_CODING_DEF:
3808 1475 : *allField = Curve2D_Def2All[inField];
3809 1475 : return GF_OK;
3810 : case GF_SG_FIELD_CODING_OUT:
3811 0 : *allField = Curve2D_Out2All[inField];
3812 0 : return GF_OK;
3813 : case GF_SG_FIELD_CODING_DYN:
3814 0 : *allField = Curve2D_Dyn2All[inField];
3815 0 : return GF_OK;
3816 : default:
3817 0 : return GF_BAD_PARAM;
3818 : }
3819 1475 : }
3820 : static GF_Err Curve2D_get_field(GF_Node *node, GF_FieldInfo *info)
3821 : {
3822 15834 : switch (info->fieldIndex) {
3823 : case 0:
3824 2813 : info->name = "point";
3825 2813 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3826 2813 : info->fieldType = GF_SG_VRML_SFNODE;
3827 2813 : info->NDTtype = NDT_SFCoordinate2DNode;
3828 2813 : info->far_ptr = & ((M_Curve2D *)node)->point;
3829 2813 : return GF_OK;
3830 : case 1:
3831 2104 : info->name = "fineness";
3832 2104 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3833 2104 : info->fieldType = GF_SG_VRML_SFFLOAT;
3834 2104 : info->far_ptr = & ((M_Curve2D *) node)->fineness;
3835 2104 : return GF_OK;
3836 : case 2:
3837 3000 : info->name = "type";
3838 3000 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3839 3000 : info->fieldType = GF_SG_VRML_MFINT32;
3840 3000 : info->far_ptr = & ((M_Curve2D *) node)->type;
3841 3000 : return GF_OK;
3842 : default:
3843 0 : return GF_BAD_PARAM;
3844 : }
3845 7917 : }
3846 :
3847 :
3848 : static s32 Curve2D_get_field_index_by_name(char *name)
3849 : {
3850 3864 : if (!strcmp("point", name)) return 0;
3851 417 : if (!strcmp("fineness", name)) return 1;
3852 786 : if (!strcmp("type", name)) return 2;
3853 0 : return -1;
3854 1423 : }
3855 : static Bool Curve2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3856 : {
3857 0 : switch (FieldIndex) {
3858 : case 1:
3859 0 : *AType = 7;
3860 0 : *QType = 0;
3861 0 : *b_min = FLT2FIX(0);
3862 0 : *b_max = FLT2FIX(1);
3863 0 : return 1;
3864 : case 2:
3865 0 : *AType = 0;
3866 0 : *QType = 13;
3867 0 : *QT13_bits = 2;
3868 0 : *b_min = FLT2FIX(0);
3869 0 : *b_max = FLT2FIX(3);
3870 0 : return 1;
3871 : default:
3872 0 : return 0;
3873 : }
3874 0 : }
3875 :
3876 :
3877 :
3878 : GF_Node *Curve2D_Create()
3879 : {
3880 : M_Curve2D *p;
3881 5220 : GF_SAFEALLOC(p, M_Curve2D);
3882 1740 : if(!p) return NULL;
3883 1740 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Curve2D);
3884 :
3885 : /*default field values*/
3886 1740 : p->fineness = FLT2FIX(0.5);
3887 1740 : return (GF_Node *)p;
3888 1740 : }
3889 :
3890 :
3891 : /*
3892 : Cylinder Node deletion
3893 : */
3894 :
3895 : static void Cylinder_Del(GF_Node *node)
3896 : {
3897 540 : M_Cylinder *p = (M_Cylinder *) node;
3898 270 : gf_node_free((GF_Node *) p);
3899 270 : }
3900 :
3901 : static const u16 Cylinder_Def2All[] = { 0, 1, 2, 3, 4};
3902 :
3903 : static u32 Cylinder_get_field_count(GF_Node *node, u8 IndexMode)
3904 : {
3905 480 : switch(IndexMode) {
3906 : case GF_SG_FIELD_CODING_IN:
3907 0 : return 0;
3908 : case GF_SG_FIELD_CODING_DEF:
3909 135 : return 5;
3910 : case GF_SG_FIELD_CODING_OUT:
3911 0 : return 0;
3912 : case GF_SG_FIELD_CODING_DYN:
3913 0 : return 0;
3914 : default:
3915 105 : return 5;
3916 : }
3917 240 : }
3918 :
3919 : static GF_Err Cylinder_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3920 : {
3921 750 : switch(IndexMode) {
3922 : case GF_SG_FIELD_CODING_DEF:
3923 375 : *allField = Cylinder_Def2All[inField];
3924 375 : return GF_OK;
3925 : default:
3926 0 : return GF_BAD_PARAM;
3927 : }
3928 375 : }
3929 : static GF_Err Cylinder_get_field(GF_Node *node, GF_FieldInfo *info)
3930 : {
3931 4050 : switch (info->fieldIndex) {
3932 : case 0:
3933 360 : info->name = "bottom";
3934 360 : info->eventType = GF_SG_EVENT_FIELD;
3935 360 : info->fieldType = GF_SG_VRML_SFBOOL;
3936 360 : info->far_ptr = & ((M_Cylinder *) node)->bottom;
3937 360 : return GF_OK;
3938 : case 1:
3939 495 : info->name = "height";
3940 495 : info->eventType = GF_SG_EVENT_FIELD;
3941 495 : info->fieldType = GF_SG_VRML_SFFLOAT;
3942 495 : info->far_ptr = & ((M_Cylinder *) node)->height;
3943 495 : return GF_OK;
3944 : case 2:
3945 495 : info->name = "radius";
3946 495 : info->eventType = GF_SG_EVENT_FIELD;
3947 495 : info->fieldType = GF_SG_VRML_SFFLOAT;
3948 495 : info->far_ptr = & ((M_Cylinder *) node)->radius;
3949 495 : return GF_OK;
3950 : case 3:
3951 315 : info->name = "side";
3952 315 : info->eventType = GF_SG_EVENT_FIELD;
3953 315 : info->fieldType = GF_SG_VRML_SFBOOL;
3954 315 : info->far_ptr = & ((M_Cylinder *) node)->side;
3955 315 : return GF_OK;
3956 : case 4:
3957 360 : info->name = "top";
3958 360 : info->eventType = GF_SG_EVENT_FIELD;
3959 360 : info->fieldType = GF_SG_VRML_SFBOOL;
3960 360 : info->far_ptr = & ((M_Cylinder *) node)->top;
3961 360 : return GF_OK;
3962 : default:
3963 0 : return GF_BAD_PARAM;
3964 : }
3965 2025 : }
3966 :
3967 :
3968 : static s32 Cylinder_get_field_index_by_name(char *name)
3969 : {
3970 384 : if (!strcmp("bottom", name)) return 0;
3971 216 : if (!strcmp("height", name)) return 1;
3972 156 : if (!strcmp("radius", name)) return 2;
3973 48 : if (!strcmp("side", name)) return 3;
3974 48 : if (!strcmp("top", name)) return 4;
3975 0 : return -1;
3976 180 : }
3977 : static Bool Cylinder_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3978 : {
3979 0 : switch (FieldIndex) {
3980 : case 1:
3981 0 : *AType = 0;
3982 0 : *QType = 11;
3983 0 : *b_min = FLT2FIX(0);
3984 0 : *b_max = FIX_MAX;
3985 0 : return 1;
3986 : case 2:
3987 0 : *AType = 0;
3988 0 : *QType = 11;
3989 0 : *b_min = FLT2FIX(0);
3990 0 : *b_max = FIX_MAX;
3991 0 : return 1;
3992 : default:
3993 0 : return 0;
3994 : }
3995 0 : }
3996 :
3997 :
3998 :
3999 : GF_Node *Cylinder_Create()
4000 : {
4001 : M_Cylinder *p;
4002 810 : GF_SAFEALLOC(p, M_Cylinder);
4003 270 : if(!p) return NULL;
4004 270 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Cylinder);
4005 :
4006 : /*default field values*/
4007 270 : p->bottom = 1;
4008 270 : p->height = FLT2FIX(2);
4009 270 : p->radius = FLT2FIX(1);
4010 270 : p->side = 1;
4011 270 : p->top = 1;
4012 270 : return (GF_Node *)p;
4013 270 : }
4014 :
4015 :
4016 : /*
4017 : CylinderSensor Node deletion
4018 : */
4019 :
4020 : static void CylinderSensor_Del(GF_Node *node)
4021 : {
4022 36 : M_CylinderSensor *p = (M_CylinderSensor *) node;
4023 18 : gf_node_free((GF_Node *) p);
4024 18 : }
4025 :
4026 : static const u16 CylinderSensor_Def2All[] = { 0, 1, 2, 3, 4, 5};
4027 : static const u16 CylinderSensor_In2All[] = { 0, 1, 2, 3, 4, 5};
4028 : static const u16 CylinderSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
4029 :
4030 : static u32 CylinderSensor_get_field_count(GF_Node *node, u8 IndexMode)
4031 : {
4032 104 : switch(IndexMode) {
4033 : case GF_SG_FIELD_CODING_IN:
4034 0 : return 6;
4035 : case GF_SG_FIELD_CODING_DEF:
4036 9 : return 6;
4037 : case GF_SG_FIELD_CODING_OUT:
4038 36 : return 9;
4039 : case GF_SG_FIELD_CODING_DYN:
4040 0 : return 0;
4041 : default:
4042 7 : return 9;
4043 : }
4044 52 : }
4045 :
4046 : static GF_Err CylinderSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
4047 : {
4048 188 : switch(IndexMode) {
4049 : case GF_SG_FIELD_CODING_IN:
4050 0 : *allField = CylinderSensor_In2All[inField];
4051 0 : return GF_OK;
4052 : case GF_SG_FIELD_CODING_DEF:
4053 12 : *allField = CylinderSensor_Def2All[inField];
4054 12 : return GF_OK;
4055 : case GF_SG_FIELD_CODING_OUT:
4056 82 : *allField = CylinderSensor_Out2All[inField];
4057 82 : return GF_OK;
4058 : default:
4059 0 : return GF_BAD_PARAM;
4060 : }
4061 94 : }
4062 : static GF_Err CylinderSensor_get_field(GF_Node *node, GF_FieldInfo *info)
4063 : {
4064 322 : switch (info->fieldIndex) {
4065 : case 0:
4066 18 : info->name = "autoOffset";
4067 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4068 18 : info->fieldType = GF_SG_VRML_SFBOOL;
4069 18 : info->far_ptr = & ((M_CylinderSensor *) node)->autoOffset;
4070 18 : return GF_OK;
4071 : case 1:
4072 18 : info->name = "diskAngle";
4073 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4074 18 : info->fieldType = GF_SG_VRML_SFFLOAT;
4075 18 : info->far_ptr = & ((M_CylinderSensor *) node)->diskAngle;
4076 18 : return GF_OK;
4077 : case 2:
4078 18 : info->name = "enabled";
4079 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4080 18 : info->fieldType = GF_SG_VRML_SFBOOL;
4081 18 : info->far_ptr = & ((M_CylinderSensor *) node)->enabled;
4082 18 : return GF_OK;
4083 : case 3:
4084 18 : info->name = "maxAngle";
4085 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4086 18 : info->fieldType = GF_SG_VRML_SFFLOAT;
4087 18 : info->far_ptr = & ((M_CylinderSensor *) node)->maxAngle;
4088 18 : return GF_OK;
4089 : case 4:
4090 18 : info->name = "minAngle";
4091 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4092 18 : info->fieldType = GF_SG_VRML_SFFLOAT;
4093 18 : info->far_ptr = & ((M_CylinderSensor *) node)->minAngle;
4094 18 : return GF_OK;
4095 : case 5:
4096 18 : info->name = "offset";
4097 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4098 18 : info->fieldType = GF_SG_VRML_SFFLOAT;
4099 18 : info->far_ptr = & ((M_CylinderSensor *) node)->offset;
4100 18 : return GF_OK;
4101 : case 6:
4102 23 : info->name = "isActive";
4103 23 : info->eventType = GF_SG_EVENT_OUT;
4104 23 : info->fieldType = GF_SG_VRML_SFBOOL;
4105 23 : info->far_ptr = & ((M_CylinderSensor *) node)->isActive;
4106 23 : return GF_OK;
4107 : case 7:
4108 15 : info->name = "rotation_changed";
4109 15 : info->eventType = GF_SG_EVENT_OUT;
4110 15 : info->fieldType = GF_SG_VRML_SFROTATION;
4111 15 : info->far_ptr = & ((M_CylinderSensor *) node)->rotation_changed;
4112 15 : return GF_OK;
4113 : case 8:
4114 15 : info->name = "trackPoint_changed";
4115 15 : info->eventType = GF_SG_EVENT_OUT;
4116 15 : info->fieldType = GF_SG_VRML_SFVEC3F;
4117 15 : info->far_ptr = & ((M_CylinderSensor *) node)->trackPoint_changed;
4118 15 : return GF_OK;
4119 : default:
4120 0 : return GF_BAD_PARAM;
4121 : }
4122 161 : }
4123 :
4124 :
4125 : static s32 CylinderSensor_get_field_index_by_name(char *name)
4126 : {
4127 32 : if (!strcmp("autoOffset", name)) return 0;
4128 16 : if (!strcmp("diskAngle", name)) return 1;
4129 16 : if (!strcmp("enabled", name)) return 2;
4130 16 : if (!strcmp("maxAngle", name)) return 3;
4131 16 : if (!strcmp("minAngle", name)) return 4;
4132 16 : if (!strcmp("offset", name)) return 5;
4133 24 : if (!strcmp("isActive", name)) return 6;
4134 12 : if (!strcmp("rotation_changed", name)) return 7;
4135 8 : if (!strcmp("trackPoint_changed", name)) return 8;
4136 0 : return -1;
4137 16 : }
4138 : static Bool CylinderSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
4139 : {
4140 0 : switch (FieldIndex) {
4141 : case 1:
4142 0 : *AType = 0;
4143 0 : *QType = 6;
4144 0 : *b_min = FLT2FIX(0);
4145 0 : *b_max = FLT2FIX(1.5707963);
4146 0 : return 1;
4147 : case 3:
4148 0 : *AType = 0;
4149 0 : *QType = 6;
4150 0 : *b_min = FLT2FIX(-6.2831853);
4151 0 : *b_max = FLT2FIX(6.2831853);
4152 0 : return 1;
4153 : case 4:
4154 0 : *AType = 0;
4155 0 : *QType = 6;
4156 0 : *b_min = FLT2FIX(-6.2831853);
4157 0 : *b_max = FLT2FIX(6.2831853);
4158 0 : return 1;
4159 : case 5:
4160 0 : *AType = 0;
4161 0 : *QType = 6;
4162 0 : *b_min = FLT2FIX(0);
4163 0 : *b_max = FLT2FIX(6.2831853);
4164 0 : return 1;
4165 : default:
4166 0 : return 0;
4167 : }
4168 0 : }
4169 :
4170 :
4171 :
4172 : GF_Node *CylinderSensor_Create()
4173 : {
4174 : M_CylinderSensor *p;
4175 54 : GF_SAFEALLOC(p, M_CylinderSensor);
4176 18 : if(!p) return NULL;
4177 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_CylinderSensor);
4178 :
4179 : /*default field values*/
4180 18 : p->autoOffset = 1;
4181 18 : p->diskAngle = FLT2FIX(0.262);
4182 18 : p->enabled = 1;
4183 18 : p->maxAngle = FLT2FIX(-1);
4184 18 : p->minAngle = FLT2FIX(0);
4185 18 : p->offset = FLT2FIX(0);
4186 18 : return (GF_Node *)p;
4187 18 : }
4188 :
4189 :
4190 : /*
4191 : DirectionalLight Node deletion
4192 : */
4193 :
4194 : static void DirectionalLight_Del(GF_Node *node)
4195 : {
4196 180 : M_DirectionalLight *p = (M_DirectionalLight *) node;
4197 90 : gf_node_free((GF_Node *) p);
4198 90 : }
4199 :
4200 : static const u16 DirectionalLight_Def2All[] = { 0, 1, 2, 3, 4};
4201 : static const u16 DirectionalLight_In2All[] = { 0, 1, 2, 3, 4};
4202 : static const u16 DirectionalLight_Out2All[] = { 0, 1, 2, 3, 4};
4203 : static const u16 DirectionalLight_Dyn2All[] = { 0, 1, 2, 3};
4204 :
4205 : static u32 DirectionalLight_get_field_count(GF_Node *node, u8 IndexMode)
4206 : {
4207 178 : switch(IndexMode) {
4208 : case GF_SG_FIELD_CODING_IN:
4209 9 : return 5;
4210 : case GF_SG_FIELD_CODING_DEF:
4211 45 : return 5;
4212 : case GF_SG_FIELD_CODING_OUT:
4213 0 : return 5;
4214 : case GF_SG_FIELD_CODING_DYN:
4215 0 : return 4;
4216 : default:
4217 35 : return 5;
4218 : }
4219 89 : }
4220 :
4221 : static GF_Err DirectionalLight_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
4222 : {
4223 182 : switch(IndexMode) {
4224 : case GF_SG_FIELD_CODING_IN:
4225 11 : *allField = DirectionalLight_In2All[inField];
4226 11 : return GF_OK;
4227 : case GF_SG_FIELD_CODING_DEF:
4228 80 : *allField = DirectionalLight_Def2All[inField];
4229 80 : return GF_OK;
4230 : case GF_SG_FIELD_CODING_OUT:
4231 0 : *allField = DirectionalLight_Out2All[inField];
4232 0 : return GF_OK;
4233 : case GF_SG_FIELD_CODING_DYN:
4234 0 : *allField = DirectionalLight_Dyn2All[inField];
4235 0 : return GF_OK;
4236 : default:
4237 0 : return GF_BAD_PARAM;
4238 : }
4239 91 : }
4240 : static GF_Err DirectionalLight_get_field(GF_Node *node, GF_FieldInfo *info)
4241 : {
4242 1104 : switch (info->fieldIndex) {
4243 : case 0:
4244 90 : info->name = "ambientIntensity";
4245 90 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4246 90 : info->fieldType = GF_SG_VRML_SFFLOAT;
4247 90 : info->far_ptr = & ((M_DirectionalLight *) node)->ambientIntensity;
4248 90 : return GF_OK;
4249 : case 1:
4250 137 : info->name = "color";
4251 137 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4252 137 : info->fieldType = GF_SG_VRML_SFCOLOR;
4253 137 : info->far_ptr = & ((M_DirectionalLight *) node)->color;
4254 137 : return GF_OK;
4255 : case 2:
4256 145 : info->name = "direction";
4257 145 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4258 145 : info->fieldType = GF_SG_VRML_SFVEC3F;
4259 145 : info->far_ptr = & ((M_DirectionalLight *) node)->direction;
4260 145 : return GF_OK;
4261 : case 3:
4262 90 : info->name = "intensity";
4263 90 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4264 90 : info->fieldType = GF_SG_VRML_SFFLOAT;
4265 90 : info->far_ptr = & ((M_DirectionalLight *) node)->intensity;
4266 90 : return GF_OK;
4267 : case 4:
4268 90 : info->name = "on";
4269 90 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4270 90 : info->fieldType = GF_SG_VRML_SFBOOL;
4271 90 : info->far_ptr = & ((M_DirectionalLight *) node)->on;
4272 90 : return GF_OK;
4273 : default:
4274 0 : return GF_BAD_PARAM;
4275 : }
4276 552 : }
4277 :
4278 :
4279 : static s32 DirectionalLight_get_field_index_by_name(char *name)
4280 : {
4281 64 : if (!strcmp("ambientIntensity", name)) return 0;
4282 46 : if (!strcmp("color", name)) return 1;
4283 36 : if (!strcmp("direction", name)) return 2;
4284 0 : if (!strcmp("intensity", name)) return 3;
4285 0 : if (!strcmp("on", name)) return 4;
4286 0 : return -1;
4287 32 : }
4288 : static Bool DirectionalLight_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
4289 : {
4290 0 : switch (FieldIndex) {
4291 : case 0:
4292 0 : *AType = 8;
4293 0 : *QType = 4;
4294 0 : *b_min = FLT2FIX(0);
4295 0 : *b_max = FLT2FIX(1);
4296 0 : return 1;
4297 : case 1:
4298 0 : *AType = 4;
4299 0 : *QType = 4;
4300 0 : *b_min = FLT2FIX(0);
4301 0 : *b_max = FLT2FIX(1);
4302 0 : return 1;
4303 : case 2:
4304 0 : *AType = 9;
4305 0 : *QType = 9;
4306 0 : return 1;
4307 : case 3:
4308 0 : *AType = 8;
4309 0 : *QType = 4;
4310 0 : *b_min = FLT2FIX(0);
4311 0 : *b_max = FLT2FIX(1);
4312 0 : return 1;
4313 : default:
4314 0 : return 0;
4315 : }
4316 0 : }
4317 :
4318 :
4319 :
4320 : GF_Node *DirectionalLight_Create()
4321 : {
4322 : M_DirectionalLight *p;
4323 270 : GF_SAFEALLOC(p, M_DirectionalLight);
4324 90 : if(!p) return NULL;
4325 90 : gf_node_setup((GF_Node *)p, TAG_MPEG4_DirectionalLight);
4326 :
4327 : /*default field values*/
4328 90 : p->ambientIntensity = FLT2FIX(0);
4329 90 : p->color.red = FLT2FIX(1);
4330 90 : p->color.green = FLT2FIX(1);
4331 90 : p->color.blue = FLT2FIX(1);
4332 90 : p->direction.x = FLT2FIX(0);
4333 90 : p->direction.y = FLT2FIX(0);
4334 90 : p->direction.z = FLT2FIX(-1);
4335 90 : p->intensity = FLT2FIX(1);
4336 90 : p->on = 1;
4337 90 : return (GF_Node *)p;
4338 90 : }
4339 :
4340 :
4341 : /*
4342 : DiscSensor Node deletion
4343 : */
4344 :
4345 : static void DiscSensor_Del(GF_Node *node)
4346 : {
4347 108 : M_DiscSensor *p = (M_DiscSensor *) node;
4348 54 : gf_node_free((GF_Node *) p);
4349 54 : }
4350 :
4351 : static const u16 DiscSensor_Def2All[] = { 0, 1, 2, 3, 4};
4352 : static const u16 DiscSensor_In2All[] = { 0, 1, 2, 3, 4};
4353 : static const u16 DiscSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
4354 :
4355 : static u32 DiscSensor_get_field_count(GF_Node *node, u8 IndexMode)
4356 : {
4357 150 : switch(IndexMode) {
4358 : case GF_SG_FIELD_CODING_IN:
4359 0 : return 5;
4360 : case GF_SG_FIELD_CODING_DEF:
4361 27 : return 5;
4362 : case GF_SG_FIELD_CODING_OUT:
4363 27 : return 8;
4364 : case GF_SG_FIELD_CODING_DYN:
4365 0 : return 0;
4366 : default:
4367 21 : return 8;
4368 : }
4369 75 : }
4370 :
4371 : static GF_Err DiscSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
4372 : {
4373 184 : switch(IndexMode) {
4374 : case GF_SG_FIELD_CODING_IN:
4375 0 : *allField = DiscSensor_In2All[inField];
4376 0 : return GF_OK;
4377 : case GF_SG_FIELD_CODING_DEF:
4378 35 : *allField = DiscSensor_Def2All[inField];
4379 35 : return GF_OK;
4380 : case GF_SG_FIELD_CODING_OUT:
4381 57 : *allField = DiscSensor_Out2All[inField];
4382 57 : return GF_OK;
4383 : default:
4384 0 : return GF_BAD_PARAM;
4385 : }
4386 92 : }
4387 : static GF_Err DiscSensor_get_field(GF_Node *node, GF_FieldInfo *info)
4388 : {
4389 744 : switch (info->fieldIndex) {
4390 : case 0:
4391 69 : info->name = "autoOffset";
4392 69 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4393 69 : info->fieldType = GF_SG_VRML_SFBOOL;
4394 69 : info->far_ptr = & ((M_DiscSensor *) node)->autoOffset;
4395 69 : return GF_OK;
4396 : case 1:
4397 54 : info->name = "enabled";
4398 54 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4399 54 : info->fieldType = GF_SG_VRML_SFBOOL;
4400 54 : info->far_ptr = & ((M_DiscSensor *) node)->enabled;
4401 54 : return GF_OK;
4402 : case 2:
4403 54 : info->name = "maxAngle";
4404 54 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4405 54 : info->fieldType = GF_SG_VRML_SFFLOAT;
4406 54 : info->far_ptr = & ((M_DiscSensor *) node)->maxAngle;
4407 54 : return GF_OK;
4408 : case 3:
4409 54 : info->name = "minAngle";
4410 54 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4411 54 : info->fieldType = GF_SG_VRML_SFFLOAT;
4412 54 : info->far_ptr = & ((M_DiscSensor *) node)->minAngle;
4413 54 : return GF_OK;
4414 : case 4:
4415 54 : info->name = "offset";
4416 54 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4417 54 : info->fieldType = GF_SG_VRML_SFFLOAT;
4418 54 : info->far_ptr = & ((M_DiscSensor *) node)->offset;
4419 54 : return GF_OK;
4420 : case 5:
4421 21 : info->name = "isActive";
4422 21 : info->eventType = GF_SG_EVENT_OUT;
4423 21 : info->fieldType = GF_SG_VRML_SFBOOL;
4424 21 : info->far_ptr = & ((M_DiscSensor *) node)->isActive;
4425 21 : return GF_OK;
4426 : case 6:
4427 45 : info->name = "rotation_changed";
4428 45 : info->eventType = GF_SG_EVENT_OUT;
4429 45 : info->fieldType = GF_SG_VRML_SFFLOAT;
4430 45 : info->far_ptr = & ((M_DiscSensor *) node)->rotation_changed;
4431 45 : return GF_OK;
4432 : case 7:
4433 21 : info->name = "trackPoint_changed";
4434 21 : info->eventType = GF_SG_EVENT_OUT;
4435 21 : info->fieldType = GF_SG_VRML_SFVEC2F;
4436 21 : info->far_ptr = & ((M_DiscSensor *) node)->trackPoint_changed;
4437 21 : return GF_OK;
4438 : default:
4439 0 : return GF_BAD_PARAM;
4440 : }
4441 372 : }
4442 :
4443 :
4444 : static s32 DiscSensor_get_field_index_by_name(char *name)
4445 : {
4446 36 : if (!strcmp("autoOffset", name)) return 0;
4447 12 : if (!strcmp("enabled", name)) return 1;
4448 12 : if (!strcmp("maxAngle", name)) return 2;
4449 12 : if (!strcmp("minAngle", name)) return 3;
4450 12 : if (!strcmp("offset", name)) return 4;
4451 12 : if (!strcmp("isActive", name)) return 5;
4452 24 : if (!strcmp("rotation_changed", name)) return 6;
4453 0 : if (!strcmp("trackPoint_changed", name)) return 7;
4454 0 : return -1;
4455 16 : }
4456 : static Bool DiscSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
4457 : {
4458 0 : switch (FieldIndex) {
4459 : case 2:
4460 0 : *AType = 0;
4461 0 : *QType = 6;
4462 0 : *b_min = FLT2FIX(-6.2831853);
4463 0 : *b_max = FLT2FIX(6.2831853);
4464 0 : return 1;
4465 : case 3:
4466 0 : *AType = 0;
4467 0 : *QType = 6;
4468 0 : *b_min = FLT2FIX(-6.2831853);
4469 0 : *b_max = FLT2FIX(6.2831853);
4470 0 : return 1;
4471 : case 4:
4472 0 : *AType = 0;
4473 0 : *QType = 6;
4474 0 : *b_min = FLT2FIX(0);
4475 0 : *b_max = FLT2FIX(6.2831853);
4476 0 : return 1;
4477 : default:
4478 0 : return 0;
4479 : }
4480 0 : }
4481 :
4482 :
4483 :
4484 : GF_Node *DiscSensor_Create()
4485 : {
4486 : M_DiscSensor *p;
4487 162 : GF_SAFEALLOC(p, M_DiscSensor);
4488 54 : if(!p) return NULL;
4489 54 : gf_node_setup((GF_Node *)p, TAG_MPEG4_DiscSensor);
4490 :
4491 : /*default field values*/
4492 54 : p->autoOffset = 1;
4493 54 : p->enabled = 1;
4494 54 : p->maxAngle = FLT2FIX(-1);
4495 54 : p->minAngle = FLT2FIX(0);
4496 54 : p->offset = FLT2FIX(0);
4497 54 : return (GF_Node *)p;
4498 54 : }
4499 :
4500 :
4501 : /*
4502 : ElevationGrid Node deletion
4503 : */
4504 :
4505 : static void ElevationGrid_Del(GF_Node *node)
4506 : {
4507 36 : M_ElevationGrid *p = (M_ElevationGrid *) node;
4508 18 : gf_sg_mffloat_del(p->set_height);
4509 18 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
4510 18 : gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
4511 18 : gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
4512 18 : gf_sg_mffloat_del(p->height);
4513 18 : gf_node_free((GF_Node *) p);
4514 18 : }
4515 :
4516 : static const u16 ElevationGrid_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
4517 : static const u16 ElevationGrid_In2All[] = { 0, 1, 2, 3};
4518 : static const u16 ElevationGrid_Out2All[] = { 1, 2, 3};
4519 :
4520 : static u32 ElevationGrid_get_field_count(GF_Node *node, u8 IndexMode)
4521 : {
4522 32 : switch(IndexMode) {
4523 : case GF_SG_FIELD_CODING_IN:
4524 0 : return 4;
4525 : case GF_SG_FIELD_CODING_DEF:
4526 9 : return 13;
4527 : case GF_SG_FIELD_CODING_OUT:
4528 0 : return 3;
4529 : case GF_SG_FIELD_CODING_DYN:
4530 0 : return 0;
4531 : default:
4532 7 : return 14;
4533 : }
4534 16 : }
4535 :
4536 : static GF_Err ElevationGrid_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
4537 : {
4538 112 : switch(IndexMode) {
4539 : case GF_SG_FIELD_CODING_IN:
4540 0 : *allField = ElevationGrid_In2All[inField];
4541 0 : return GF_OK;
4542 : case GF_SG_FIELD_CODING_DEF:
4543 56 : *allField = ElevationGrid_Def2All[inField];
4544 56 : return GF_OK;
4545 : case GF_SG_FIELD_CODING_OUT:
4546 0 : *allField = ElevationGrid_Out2All[inField];
4547 0 : return GF_OK;
4548 : default:
4549 0 : return GF_BAD_PARAM;
4550 : }
4551 56 : }
4552 : static GF_Err ElevationGrid_get_field(GF_Node *node, GF_FieldInfo *info)
4553 : {
4554 608 : switch (info->fieldIndex) {
4555 : case 0:
4556 7 : info->name = "set_height";
4557 7 : info->eventType = GF_SG_EVENT_IN;
4558 7 : info->on_event_in = ((M_ElevationGrid *)node)->on_set_height;
4559 7 : info->fieldType = GF_SG_VRML_MFFLOAT;
4560 7 : info->far_ptr = & ((M_ElevationGrid *) node)->set_height;
4561 7 : return GF_OK;
4562 : case 1:
4563 9 : info->name = "color";
4564 9 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4565 9 : info->fieldType = GF_SG_VRML_SFNODE;
4566 9 : info->NDTtype = NDT_SFColorNode;
4567 9 : info->far_ptr = & ((M_ElevationGrid *)node)->color;
4568 9 : return GF_OK;
4569 : case 2:
4570 9 : info->name = "normal";
4571 9 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4572 9 : info->fieldType = GF_SG_VRML_SFNODE;
4573 9 : info->NDTtype = NDT_SFNormalNode;
4574 9 : info->far_ptr = & ((M_ElevationGrid *)node)->normal;
4575 9 : return GF_OK;
4576 : case 3:
4577 9 : info->name = "texCoord";
4578 9 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4579 9 : info->fieldType = GF_SG_VRML_SFNODE;
4580 9 : info->NDTtype = NDT_SFTextureCoordinateNode;
4581 9 : info->far_ptr = & ((M_ElevationGrid *)node)->texCoord;
4582 9 : return GF_OK;
4583 : case 4:
4584 33 : info->name = "height";
4585 33 : info->eventType = GF_SG_EVENT_FIELD;
4586 33 : info->fieldType = GF_SG_VRML_MFFLOAT;
4587 33 : info->far_ptr = & ((M_ElevationGrid *) node)->height;
4588 33 : return GF_OK;
4589 : case 5:
4590 18 : info->name = "ccw";
4591 18 : info->eventType = GF_SG_EVENT_FIELD;
4592 18 : info->fieldType = GF_SG_VRML_SFBOOL;
4593 18 : info->far_ptr = & ((M_ElevationGrid *) node)->ccw;
4594 18 : return GF_OK;
4595 : case 6:
4596 18 : info->name = "colorPerVertex";
4597 18 : info->eventType = GF_SG_EVENT_FIELD;
4598 18 : info->fieldType = GF_SG_VRML_SFBOOL;
4599 18 : info->far_ptr = & ((M_ElevationGrid *) node)->colorPerVertex;
4600 18 : return GF_OK;
4601 : case 7:
4602 33 : info->name = "creaseAngle";
4603 33 : info->eventType = GF_SG_EVENT_FIELD;
4604 33 : info->fieldType = GF_SG_VRML_SFFLOAT;
4605 33 : info->far_ptr = & ((M_ElevationGrid *) node)->creaseAngle;
4606 33 : return GF_OK;
4607 : case 8:
4608 18 : info->name = "normalPerVertex";
4609 18 : info->eventType = GF_SG_EVENT_FIELD;
4610 18 : info->fieldType = GF_SG_VRML_SFBOOL;
4611 18 : info->far_ptr = & ((M_ElevationGrid *) node)->normalPerVertex;
4612 18 : return GF_OK;
4613 : case 9:
4614 18 : info->name = "solid";
4615 18 : info->eventType = GF_SG_EVENT_FIELD;
4616 18 : info->fieldType = GF_SG_VRML_SFBOOL;
4617 18 : info->far_ptr = & ((M_ElevationGrid *) node)->solid;
4618 18 : return GF_OK;
4619 : case 10:
4620 33 : info->name = "xDimension";
4621 33 : info->eventType = GF_SG_EVENT_FIELD;
4622 33 : info->fieldType = GF_SG_VRML_SFINT32;
4623 33 : info->far_ptr = & ((M_ElevationGrid *) node)->xDimension;
4624 33 : return GF_OK;
4625 : case 11:
4626 33 : info->name = "xSpacing";
4627 33 : info->eventType = GF_SG_EVENT_FIELD;
4628 33 : info->fieldType = GF_SG_VRML_SFFLOAT;
4629 33 : info->far_ptr = & ((M_ElevationGrid *) node)->xSpacing;
4630 33 : return GF_OK;
4631 : case 12:
4632 33 : info->name = "zDimension";
4633 33 : info->eventType = GF_SG_EVENT_FIELD;
4634 33 : info->fieldType = GF_SG_VRML_SFINT32;
4635 33 : info->far_ptr = & ((M_ElevationGrid *) node)->zDimension;
4636 33 : return GF_OK;
4637 : case 13:
4638 33 : info->name = "zSpacing";
4639 33 : info->eventType = GF_SG_EVENT_FIELD;
4640 33 : info->fieldType = GF_SG_VRML_SFFLOAT;
4641 33 : info->far_ptr = & ((M_ElevationGrid *) node)->zSpacing;
4642 33 : return GF_OK;
4643 : default:
4644 0 : return GF_BAD_PARAM;
4645 : }
4646 304 : }
4647 :
4648 :
4649 : static s32 ElevationGrid_get_field_index_by_name(char *name)
4650 : {
4651 48 : if (!strcmp("set_height", name)) return 0;
4652 24 : if (!strcmp("color", name)) return 1;
4653 24 : if (!strcmp("normal", name)) return 2;
4654 24 : if (!strcmp("texCoord", name)) return 3;
4655 28 : if (!strcmp("height", name)) return 4;
4656 20 : if (!strcmp("ccw", name)) return 5;
4657 20 : if (!strcmp("colorPerVertex", name)) return 6;
4658 24 : if (!strcmp("creaseAngle", name)) return 7;
4659 16 : if (!strcmp("normalPerVertex", name)) return 8;
4660 16 : if (!strcmp("solid", name)) return 9;
4661 20 : if (!strcmp("xDimension", name)) return 10;
4662 16 : if (!strcmp("xSpacing", name)) return 11;
4663 12 : if (!strcmp("zDimension", name)) return 12;
4664 8 : if (!strcmp("zSpacing", name)) return 13;
4665 0 : return -1;
4666 24 : }
4667 : static Bool ElevationGrid_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
4668 : {
4669 0 : switch (FieldIndex) {
4670 : case 4:
4671 0 : *AType = 7;
4672 0 : *QType = 11;
4673 0 : *b_min = FIX_MIN;
4674 0 : *b_max = FIX_MAX;
4675 0 : return 1;
4676 : case 7:
4677 0 : *AType = 0;
4678 0 : *QType = 6;
4679 0 : *b_min = FLT2FIX(0);
4680 0 : *b_max = FLT2FIX(6.2831853);
4681 0 : return 1;
4682 : case 10:
4683 0 : *AType = 0;
4684 0 : *QType = 11;
4685 0 : *b_min = FLT2FIX(0);
4686 0 : *b_max = FIX_MAX;
4687 0 : return 1;
4688 : case 11:
4689 0 : *AType = 0;
4690 0 : *QType = 11;
4691 0 : *b_min = FLT2FIX(0);
4692 0 : *b_max = FIX_MAX;
4693 0 : return 1;
4694 : case 12:
4695 0 : *AType = 0;
4696 0 : *QType = 11;
4697 0 : *b_min = FLT2FIX(0);
4698 0 : *b_max = FIX_MAX;
4699 0 : return 1;
4700 : case 13:
4701 0 : *AType = 0;
4702 0 : *QType = 11;
4703 0 : *b_min = FLT2FIX(0);
4704 0 : *b_max = FIX_MAX;
4705 0 : return 1;
4706 : default:
4707 0 : return 0;
4708 : }
4709 0 : }
4710 :
4711 :
4712 :
4713 : GF_Node *ElevationGrid_Create()
4714 : {
4715 : M_ElevationGrid *p;
4716 54 : GF_SAFEALLOC(p, M_ElevationGrid);
4717 18 : if(!p) return NULL;
4718 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ElevationGrid);
4719 :
4720 : /*default field values*/
4721 18 : p->ccw = 1;
4722 18 : p->colorPerVertex = 1;
4723 18 : p->creaseAngle = FLT2FIX(0.0);
4724 18 : p->normalPerVertex = 1;
4725 18 : p->solid = 1;
4726 18 : p->xDimension = 0;
4727 18 : p->xSpacing = FLT2FIX(1.0);
4728 18 : p->zDimension = 0;
4729 18 : p->zSpacing = FLT2FIX(1.0);
4730 18 : return (GF_Node *)p;
4731 18 : }
4732 :
4733 :
4734 : /*
4735 : Expression Node deletion
4736 : */
4737 :
4738 : static void Expression_Del(GF_Node *node)
4739 : {
4740 0 : M_Expression *p = (M_Expression *) node;
4741 0 : gf_node_free((GF_Node *) p);
4742 0 : }
4743 :
4744 : static const u16 Expression_Def2All[] = { 0, 1, 2, 3, 4, 5};
4745 : static const u16 Expression_In2All[] = { 0, 1, 2, 3, 4, 5};
4746 : static const u16 Expression_Out2All[] = { 0, 1, 2, 3, 4, 5};
4747 :
4748 : static u32 Expression_get_field_count(GF_Node *node, u8 IndexMode)
4749 : {
4750 0 : switch(IndexMode) {
4751 : case GF_SG_FIELD_CODING_IN:
4752 0 : return 6;
4753 : case GF_SG_FIELD_CODING_DEF:
4754 0 : return 6;
4755 : case GF_SG_FIELD_CODING_OUT:
4756 0 : return 6;
4757 : case GF_SG_FIELD_CODING_DYN:
4758 0 : return 0;
4759 : default:
4760 0 : return 6;
4761 : }
4762 0 : }
4763 :
4764 : static GF_Err Expression_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
4765 : {
4766 0 : switch(IndexMode) {
4767 : case GF_SG_FIELD_CODING_IN:
4768 0 : *allField = Expression_In2All[inField];
4769 0 : return GF_OK;
4770 : case GF_SG_FIELD_CODING_DEF:
4771 0 : *allField = Expression_Def2All[inField];
4772 0 : return GF_OK;
4773 : case GF_SG_FIELD_CODING_OUT:
4774 0 : *allField = Expression_Out2All[inField];
4775 0 : return GF_OK;
4776 : default:
4777 0 : return GF_BAD_PARAM;
4778 : }
4779 0 : }
4780 : static GF_Err Expression_get_field(GF_Node *node, GF_FieldInfo *info)
4781 : {
4782 0 : switch (info->fieldIndex) {
4783 : case 0:
4784 0 : info->name = "expression_select1";
4785 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4786 0 : info->fieldType = GF_SG_VRML_SFINT32;
4787 0 : info->far_ptr = & ((M_Expression *) node)->expression_select1;
4788 0 : return GF_OK;
4789 : case 1:
4790 0 : info->name = "expression_intensity1";
4791 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4792 0 : info->fieldType = GF_SG_VRML_SFINT32;
4793 0 : info->far_ptr = & ((M_Expression *) node)->expression_intensity1;
4794 0 : return GF_OK;
4795 : case 2:
4796 0 : info->name = "expression_select2";
4797 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4798 0 : info->fieldType = GF_SG_VRML_SFINT32;
4799 0 : info->far_ptr = & ((M_Expression *) node)->expression_select2;
4800 0 : return GF_OK;
4801 : case 3:
4802 0 : info->name = "expression_intensity2";
4803 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4804 0 : info->fieldType = GF_SG_VRML_SFINT32;
4805 0 : info->far_ptr = & ((M_Expression *) node)->expression_intensity2;
4806 0 : return GF_OK;
4807 : case 4:
4808 0 : info->name = "init_face";
4809 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4810 0 : info->fieldType = GF_SG_VRML_SFBOOL;
4811 0 : info->far_ptr = & ((M_Expression *) node)->init_face;
4812 0 : return GF_OK;
4813 : case 5:
4814 0 : info->name = "expression_def";
4815 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4816 0 : info->fieldType = GF_SG_VRML_SFBOOL;
4817 0 : info->far_ptr = & ((M_Expression *) node)->expression_def;
4818 0 : return GF_OK;
4819 : default:
4820 0 : return GF_BAD_PARAM;
4821 : }
4822 0 : }
4823 :
4824 :
4825 : static s32 Expression_get_field_index_by_name(char *name)
4826 : {
4827 0 : if (!strcmp("expression_select1", name)) return 0;
4828 0 : if (!strcmp("expression_intensity1", name)) return 1;
4829 0 : if (!strcmp("expression_select2", name)) return 2;
4830 0 : if (!strcmp("expression_intensity2", name)) return 3;
4831 0 : if (!strcmp("init_face", name)) return 4;
4832 0 : if (!strcmp("expression_def", name)) return 5;
4833 0 : return -1;
4834 0 : }
4835 : static Bool Expression_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
4836 : {
4837 0 : switch (FieldIndex) {
4838 : case 0:
4839 0 : *AType = 0;
4840 0 : *QType = 13;
4841 0 : *QT13_bits = 5;
4842 0 : *b_min = FLT2FIX(0);
4843 0 : *b_max = FLT2FIX(31);
4844 0 : return 1;
4845 : case 1:
4846 0 : *AType = 0;
4847 0 : *QType = 13;
4848 0 : *QT13_bits = 6;
4849 0 : *b_min = FLT2FIX(0);
4850 0 : *b_max = FLT2FIX(63);
4851 0 : return 1;
4852 : case 2:
4853 0 : *AType = 0;
4854 0 : *QType = 13;
4855 0 : *QT13_bits = 5;
4856 0 : *b_min = FLT2FIX(0);
4857 0 : *b_max = FLT2FIX(31);
4858 0 : return 1;
4859 : case 3:
4860 0 : *AType = 0;
4861 0 : *QType = 13;
4862 0 : *QT13_bits = 6;
4863 0 : *b_min = FLT2FIX(0);
4864 0 : *b_max = FLT2FIX(63);
4865 0 : return 1;
4866 : default:
4867 0 : return 0;
4868 : }
4869 0 : }
4870 :
4871 :
4872 :
4873 : GF_Node *Expression_Create()
4874 : {
4875 : M_Expression *p;
4876 0 : GF_SAFEALLOC(p, M_Expression);
4877 0 : if(!p) return NULL;
4878 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Expression);
4879 :
4880 : /*default field values*/
4881 0 : p->expression_select1 = 0;
4882 0 : p->expression_intensity1 = 0;
4883 0 : p->expression_select2 = 0;
4884 0 : p->expression_intensity2 = 0;
4885 0 : return (GF_Node *)p;
4886 0 : }
4887 :
4888 :
4889 : /*
4890 : Extrusion Node deletion
4891 : */
4892 :
4893 : static void Extrusion_Del(GF_Node *node)
4894 : {
4895 36 : M_Extrusion *p = (M_Extrusion *) node;
4896 18 : gf_sg_mfvec2f_del(p->set_crossSection);
4897 18 : gf_sg_mfrotation_del(p->set_orientation);
4898 18 : gf_sg_mfvec2f_del(p->set_scale);
4899 18 : gf_sg_mfvec3f_del(p->set_spine);
4900 18 : gf_sg_mfvec2f_del(p->crossSection);
4901 18 : gf_sg_mfrotation_del(p->orientation);
4902 18 : gf_sg_mfvec2f_del(p->scale);
4903 18 : gf_sg_mfvec3f_del(p->spine);
4904 18 : gf_node_free((GF_Node *) p);
4905 18 : }
4906 :
4907 : static const u16 Extrusion_Def2All[] = { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
4908 : static const u16 Extrusion_In2All[] = { 0, 1, 2, 3};
4909 :
4910 : static u32 Extrusion_get_field_count(GF_Node *node, u8 IndexMode)
4911 : {
4912 32 : switch(IndexMode) {
4913 : case GF_SG_FIELD_CODING_IN:
4914 0 : return 4;
4915 : case GF_SG_FIELD_CODING_DEF:
4916 9 : return 10;
4917 : case GF_SG_FIELD_CODING_OUT:
4918 0 : return 0;
4919 : case GF_SG_FIELD_CODING_DYN:
4920 0 : return 0;
4921 : default:
4922 7 : return 14;
4923 : }
4924 16 : }
4925 :
4926 : static GF_Err Extrusion_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
4927 : {
4928 100 : switch(IndexMode) {
4929 : case GF_SG_FIELD_CODING_IN:
4930 0 : *allField = Extrusion_In2All[inField];
4931 0 : return GF_OK;
4932 : case GF_SG_FIELD_CODING_DEF:
4933 50 : *allField = Extrusion_Def2All[inField];
4934 50 : return GF_OK;
4935 : default:
4936 0 : return GF_BAD_PARAM;
4937 : }
4938 50 : }
4939 : static GF_Err Extrusion_get_field(GF_Node *node, GF_FieldInfo *info)
4940 : {
4941 600 : switch (info->fieldIndex) {
4942 : case 0:
4943 7 : info->name = "set_crossSection";
4944 7 : info->eventType = GF_SG_EVENT_IN;
4945 7 : info->on_event_in = ((M_Extrusion *)node)->on_set_crossSection;
4946 7 : info->fieldType = GF_SG_VRML_MFVEC2F;
4947 7 : info->far_ptr = & ((M_Extrusion *) node)->set_crossSection;
4948 7 : return GF_OK;
4949 : case 1:
4950 7 : info->name = "set_orientation";
4951 7 : info->eventType = GF_SG_EVENT_IN;
4952 7 : info->on_event_in = ((M_Extrusion *)node)->on_set_orientation;
4953 7 : info->fieldType = GF_SG_VRML_MFROTATION;
4954 7 : info->far_ptr = & ((M_Extrusion *) node)->set_orientation;
4955 7 : return GF_OK;
4956 : case 2:
4957 7 : info->name = "set_scale";
4958 7 : info->eventType = GF_SG_EVENT_IN;
4959 7 : info->on_event_in = ((M_Extrusion *)node)->on_set_scale;
4960 7 : info->fieldType = GF_SG_VRML_MFVEC2F;
4961 7 : info->far_ptr = & ((M_Extrusion *) node)->set_scale;
4962 7 : return GF_OK;
4963 : case 3:
4964 7 : info->name = "set_spine";
4965 7 : info->eventType = GF_SG_EVENT_IN;
4966 7 : info->on_event_in = ((M_Extrusion *)node)->on_set_spine;
4967 7 : info->fieldType = GF_SG_VRML_MFVEC3F;
4968 7 : info->far_ptr = & ((M_Extrusion *) node)->set_spine;
4969 7 : return GF_OK;
4970 : case 4:
4971 20 : info->name = "beginCap";
4972 20 : info->eventType = GF_SG_EVENT_FIELD;
4973 20 : info->fieldType = GF_SG_VRML_SFBOOL;
4974 20 : info->far_ptr = & ((M_Extrusion *) node)->beginCap;
4975 20 : return GF_OK;
4976 : case 5:
4977 18 : info->name = "ccw";
4978 18 : info->eventType = GF_SG_EVENT_FIELD;
4979 18 : info->fieldType = GF_SG_VRML_SFBOOL;
4980 18 : info->far_ptr = & ((M_Extrusion *) node)->ccw;
4981 18 : return GF_OK;
4982 : case 6:
4983 18 : info->name = "convex";
4984 18 : info->eventType = GF_SG_EVENT_FIELD;
4985 18 : info->fieldType = GF_SG_VRML_SFBOOL;
4986 18 : info->far_ptr = & ((M_Extrusion *) node)->convex;
4987 18 : return GF_OK;
4988 : case 7:
4989 33 : info->name = "creaseAngle";
4990 33 : info->eventType = GF_SG_EVENT_FIELD;
4991 33 : info->fieldType = GF_SG_VRML_SFFLOAT;
4992 33 : info->far_ptr = & ((M_Extrusion *) node)->creaseAngle;
4993 33 : return GF_OK;
4994 : case 8:
4995 33 : info->name = "crossSection";
4996 33 : info->eventType = GF_SG_EVENT_FIELD;
4997 33 : info->fieldType = GF_SG_VRML_MFVEC2F;
4998 33 : info->far_ptr = & ((M_Extrusion *) node)->crossSection;
4999 33 : return GF_OK;
5000 : case 9:
5001 33 : info->name = "endCap";
5002 33 : info->eventType = GF_SG_EVENT_FIELD;
5003 33 : info->fieldType = GF_SG_VRML_SFBOOL;
5004 33 : info->far_ptr = & ((M_Extrusion *) node)->endCap;
5005 33 : return GF_OK;
5006 : case 10:
5007 18 : info->name = "orientation";
5008 18 : info->eventType = GF_SG_EVENT_FIELD;
5009 18 : info->fieldType = GF_SG_VRML_MFROTATION;
5010 18 : info->far_ptr = & ((M_Extrusion *) node)->orientation;
5011 18 : return GF_OK;
5012 : case 11:
5013 33 : info->name = "scale";
5014 33 : info->eventType = GF_SG_EVENT_FIELD;
5015 33 : info->fieldType = GF_SG_VRML_MFVEC2F;
5016 33 : info->far_ptr = & ((M_Extrusion *) node)->scale;
5017 33 : return GF_OK;
5018 : case 12:
5019 33 : info->name = "solid";
5020 33 : info->eventType = GF_SG_EVENT_FIELD;
5021 33 : info->fieldType = GF_SG_VRML_SFBOOL;
5022 33 : info->far_ptr = & ((M_Extrusion *) node)->solid;
5023 33 : return GF_OK;
5024 : case 13:
5025 33 : info->name = "spine";
5026 33 : info->eventType = GF_SG_EVENT_FIELD;
5027 33 : info->fieldType = GF_SG_VRML_MFVEC3F;
5028 33 : info->far_ptr = & ((M_Extrusion *) node)->spine;
5029 33 : return GF_OK;
5030 : default:
5031 0 : return GF_BAD_PARAM;
5032 : }
5033 300 : }
5034 :
5035 :
5036 : static s32 Extrusion_get_field_index_by_name(char *name)
5037 : {
5038 52 : if (!strcmp("set_crossSection", name)) return 0;
5039 26 : if (!strcmp("set_orientation", name)) return 1;
5040 26 : if (!strcmp("set_scale", name)) return 2;
5041 26 : if (!strcmp("set_spine", name)) return 3;
5042 28 : if (!strcmp("beginCap", name)) return 4;
5043 24 : if (!strcmp("ccw", name)) return 5;
5044 24 : if (!strcmp("convex", name)) return 6;
5045 28 : if (!strcmp("creaseAngle", name)) return 7;
5046 24 : if (!strcmp("crossSection", name)) return 8;
5047 20 : if (!strcmp("endCap", name)) return 9;
5048 12 : if (!strcmp("orientation", name)) return 10;
5049 16 : if (!strcmp("scale", name)) return 11;
5050 12 : if (!strcmp("solid", name)) return 12;
5051 8 : if (!strcmp("spine", name)) return 13;
5052 0 : return -1;
5053 26 : }
5054 : static Bool Extrusion_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
5055 : {
5056 0 : switch (FieldIndex) {
5057 : case 7:
5058 0 : *AType = 0;
5059 0 : *QType = 6;
5060 0 : *b_min = FLT2FIX(0);
5061 0 : *b_max = FLT2FIX(6.2831853);
5062 0 : return 1;
5063 : case 8:
5064 0 : *AType = 0;
5065 0 : *QType = 2;
5066 0 : *b_min = FIX_MIN;
5067 0 : *b_max = FIX_MAX;
5068 0 : return 1;
5069 : case 10:
5070 0 : *AType = 0;
5071 0 : *QType = 10;
5072 0 : *b_min = FIX_MIN;
5073 0 : *b_max = FIX_MAX;
5074 0 : return 1;
5075 : case 11:
5076 0 : *AType = 0;
5077 0 : *QType = 7;
5078 0 : *b_min = FLT2FIX(0);
5079 0 : *b_max = FIX_MAX;
5080 0 : return 1;
5081 : case 13:
5082 0 : *AType = 0;
5083 0 : *QType = 1;
5084 0 : *b_min = FIX_MIN;
5085 0 : *b_max = FIX_MAX;
5086 0 : return 1;
5087 : default:
5088 0 : return 0;
5089 : }
5090 0 : }
5091 :
5092 :
5093 :
5094 : GF_Node *Extrusion_Create()
5095 : {
5096 : M_Extrusion *p;
5097 54 : GF_SAFEALLOC(p, M_Extrusion);
5098 18 : if(!p) return NULL;
5099 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Extrusion);
5100 :
5101 : /*default field values*/
5102 18 : p->beginCap = 1;
5103 18 : p->ccw = 1;
5104 18 : p->convex = 1;
5105 18 : p->creaseAngle = FLT2FIX(0.0);
5106 18 : p->crossSection.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*5);
5107 18 : p->crossSection.count = 5;
5108 18 : p->crossSection.vals[0].x = FLT2FIX(1);
5109 18 : p->crossSection.vals[0].y = FLT2FIX(1);
5110 18 : p->crossSection.vals[1].x = FLT2FIX(1);
5111 18 : p->crossSection.vals[1].y = FLT2FIX(-1);
5112 18 : p->crossSection.vals[2].x = FLT2FIX(-1);
5113 18 : p->crossSection.vals[2].y = FLT2FIX(-1);
5114 18 : p->crossSection.vals[3].x = FLT2FIX(-1);
5115 18 : p->crossSection.vals[3].y = FLT2FIX(1);
5116 18 : p->crossSection.vals[4].x = FLT2FIX(1);
5117 18 : p->crossSection.vals[4].y = FLT2FIX(1);
5118 18 : p->endCap = 1;
5119 18 : p->orientation.vals = (GF_Vec4*)gf_malloc(sizeof(GF_Vec4)*1);
5120 18 : p->orientation.count = 1;
5121 18 : p->orientation.vals[0].x = FLT2FIX(0);
5122 18 : p->orientation.vals[0].y = FLT2FIX(0);
5123 18 : p->orientation.vals[0].z = FLT2FIX(1);
5124 18 : p->orientation.vals[0].q = FLT2FIX(0);
5125 18 : p->scale.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*1);
5126 18 : p->scale.count = 1;
5127 18 : p->scale.vals[0].x = FLT2FIX(1);
5128 18 : p->scale.vals[0].y = FLT2FIX(1);
5129 18 : p->solid = 1;
5130 18 : p->spine.vals = (SFVec3f *)gf_malloc(sizeof(SFVec3f)*2);
5131 18 : p->spine.count = 2;
5132 18 : p->spine.vals[0].x = FLT2FIX(0);
5133 18 : p->spine.vals[0].y = FLT2FIX(0);
5134 18 : p->spine.vals[0].z = FLT2FIX(0);
5135 18 : p->spine.vals[1].x = FLT2FIX(0);
5136 18 : p->spine.vals[1].y = FLT2FIX(1);
5137 18 : p->spine.vals[1].z = FLT2FIX(0);
5138 18 : return (GF_Node *)p;
5139 18 : }
5140 :
5141 :
5142 : /*
5143 : Face Node deletion
5144 : */
5145 :
5146 : static void Face_Del(GF_Node *node)
5147 : {
5148 0 : M_Face *p = (M_Face *) node;
5149 0 : gf_node_unregister((GF_Node *) p->fap, (GF_Node *) p);
5150 0 : gf_node_unregister((GF_Node *) p->fdp, (GF_Node *) p);
5151 0 : gf_node_unregister((GF_Node *) p->fit, (GF_Node *) p);
5152 0 : gf_node_unregister((GF_Node *) p->ttsSource, (GF_Node *) p);
5153 0 : gf_node_unregister_children((GF_Node *) p, p->renderedFace);
5154 0 : gf_node_free((GF_Node *) p);
5155 0 : }
5156 :
5157 : static const u16 Face_Def2All[] = { 0, 1, 2, 3, 4};
5158 : static const u16 Face_In2All[] = { 0, 1, 2, 3, 4};
5159 : static const u16 Face_Out2All[] = { 0, 1, 2, 3, 4};
5160 :
5161 : static u32 Face_get_field_count(GF_Node *node, u8 IndexMode)
5162 : {
5163 0 : switch(IndexMode) {
5164 : case GF_SG_FIELD_CODING_IN:
5165 0 : return 5;
5166 : case GF_SG_FIELD_CODING_DEF:
5167 0 : return 5;
5168 : case GF_SG_FIELD_CODING_OUT:
5169 0 : return 5;
5170 : case GF_SG_FIELD_CODING_DYN:
5171 0 : return 0;
5172 : default:
5173 0 : return 5;
5174 : }
5175 0 : }
5176 :
5177 : static GF_Err Face_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
5178 : {
5179 0 : switch(IndexMode) {
5180 : case GF_SG_FIELD_CODING_IN:
5181 0 : *allField = Face_In2All[inField];
5182 0 : return GF_OK;
5183 : case GF_SG_FIELD_CODING_DEF:
5184 0 : *allField = Face_Def2All[inField];
5185 0 : return GF_OK;
5186 : case GF_SG_FIELD_CODING_OUT:
5187 0 : *allField = Face_Out2All[inField];
5188 0 : return GF_OK;
5189 : default:
5190 0 : return GF_BAD_PARAM;
5191 : }
5192 0 : }
5193 : static GF_Err Face_get_field(GF_Node *node, GF_FieldInfo *info)
5194 : {
5195 0 : switch (info->fieldIndex) {
5196 : case 0:
5197 0 : info->name = "fap";
5198 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5199 0 : info->fieldType = GF_SG_VRML_SFNODE;
5200 0 : info->NDTtype = NDT_SFFAPNode;
5201 0 : info->far_ptr = & ((M_Face *)node)->fap;
5202 0 : return GF_OK;
5203 : case 1:
5204 0 : info->name = "fdp";
5205 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5206 0 : info->fieldType = GF_SG_VRML_SFNODE;
5207 0 : info->NDTtype = NDT_SFFDPNode;
5208 0 : info->far_ptr = & ((M_Face *)node)->fdp;
5209 0 : return GF_OK;
5210 : case 2:
5211 0 : info->name = "fit";
5212 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5213 0 : info->fieldType = GF_SG_VRML_SFNODE;
5214 0 : info->NDTtype = NDT_SFFITNode;
5215 0 : info->far_ptr = & ((M_Face *)node)->fit;
5216 0 : return GF_OK;
5217 : case 3:
5218 0 : info->name = "ttsSource";
5219 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5220 0 : info->fieldType = GF_SG_VRML_SFNODE;
5221 0 : info->NDTtype = NDT_SFAudioNode;
5222 0 : info->far_ptr = & ((M_Face *)node)->ttsSource;
5223 0 : return GF_OK;
5224 : case 4:
5225 0 : info->name = "renderedFace";
5226 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5227 0 : info->fieldType = GF_SG_VRML_MFNODE;
5228 0 : info->NDTtype = NDT_SF3DNode;
5229 0 : info->far_ptr = & ((M_Face *)node)->renderedFace;
5230 0 : return GF_OK;
5231 : default:
5232 0 : return GF_BAD_PARAM;
5233 : }
5234 0 : }
5235 :
5236 :
5237 : static s32 Face_get_field_index_by_name(char *name)
5238 : {
5239 0 : if (!strcmp("fap", name)) return 0;
5240 0 : if (!strcmp("fdp", name)) return 1;
5241 0 : if (!strcmp("fit", name)) return 2;
5242 0 : if (!strcmp("ttsSource", name)) return 3;
5243 0 : if (!strcmp("renderedFace", name)) return 4;
5244 0 : return -1;
5245 0 : }
5246 : static Bool Face_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
5247 : {
5248 : switch (FieldIndex) {
5249 : default:
5250 0 : return 0;
5251 : }
5252 : }
5253 :
5254 :
5255 :
5256 : GF_Node *Face_Create()
5257 : {
5258 : M_Face *p;
5259 0 : GF_SAFEALLOC(p, M_Face);
5260 0 : if(!p) return NULL;
5261 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Face);
5262 :
5263 : /*default field values*/
5264 0 : return (GF_Node *)p;
5265 0 : }
5266 :
5267 :
5268 : /*
5269 : FaceDefMesh Node deletion
5270 : */
5271 :
5272 : static void FaceDefMesh_Del(GF_Node *node)
5273 : {
5274 0 : M_FaceDefMesh *p = (M_FaceDefMesh *) node;
5275 0 : gf_node_unregister((GF_Node *) p->faceSceneGraphNode, (GF_Node *) p);
5276 0 : gf_sg_mfint32_del(p->intervalBorders);
5277 0 : gf_sg_mfint32_del(p->coordIndex);
5278 0 : gf_sg_mfvec3f_del(p->displacements);
5279 0 : gf_node_free((GF_Node *) p);
5280 0 : }
5281 :
5282 : static const u16 FaceDefMesh_Def2All[] = { 0, 1, 2, 3};
5283 :
5284 : static u32 FaceDefMesh_get_field_count(GF_Node *node, u8 IndexMode)
5285 : {
5286 0 : switch(IndexMode) {
5287 : case GF_SG_FIELD_CODING_IN:
5288 0 : return 0;
5289 : case GF_SG_FIELD_CODING_DEF:
5290 0 : return 4;
5291 : case GF_SG_FIELD_CODING_OUT:
5292 0 : return 0;
5293 : case GF_SG_FIELD_CODING_DYN:
5294 0 : return 0;
5295 : default:
5296 0 : return 4;
5297 : }
5298 0 : }
5299 :
5300 : static GF_Err FaceDefMesh_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
5301 : {
5302 0 : switch(IndexMode) {
5303 : case GF_SG_FIELD_CODING_DEF:
5304 0 : *allField = FaceDefMesh_Def2All[inField];
5305 0 : return GF_OK;
5306 : default:
5307 0 : return GF_BAD_PARAM;
5308 : }
5309 0 : }
5310 : static GF_Err FaceDefMesh_get_field(GF_Node *node, GF_FieldInfo *info)
5311 : {
5312 0 : switch (info->fieldIndex) {
5313 : case 0:
5314 0 : info->name = "faceSceneGraphNode";
5315 0 : info->eventType = GF_SG_EVENT_FIELD;
5316 0 : info->fieldType = GF_SG_VRML_SFNODE;
5317 0 : info->NDTtype = NDT_SF3DNode;
5318 0 : info->far_ptr = & ((M_FaceDefMesh *)node)->faceSceneGraphNode;
5319 0 : return GF_OK;
5320 : case 1:
5321 0 : info->name = "intervalBorders";
5322 0 : info->eventType = GF_SG_EVENT_FIELD;
5323 0 : info->fieldType = GF_SG_VRML_MFINT32;
5324 0 : info->far_ptr = & ((M_FaceDefMesh *) node)->intervalBorders;
5325 0 : return GF_OK;
5326 : case 2:
5327 0 : info->name = "coordIndex";
5328 0 : info->eventType = GF_SG_EVENT_FIELD;
5329 0 : info->fieldType = GF_SG_VRML_MFINT32;
5330 0 : info->far_ptr = & ((M_FaceDefMesh *) node)->coordIndex;
5331 0 : return GF_OK;
5332 : case 3:
5333 0 : info->name = "displacements";
5334 0 : info->eventType = GF_SG_EVENT_FIELD;
5335 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
5336 0 : info->far_ptr = & ((M_FaceDefMesh *) node)->displacements;
5337 0 : return GF_OK;
5338 : default:
5339 0 : return GF_BAD_PARAM;
5340 : }
5341 0 : }
5342 :
5343 :
5344 : static s32 FaceDefMesh_get_field_index_by_name(char *name)
5345 : {
5346 0 : if (!strcmp("faceSceneGraphNode", name)) return 0;
5347 0 : if (!strcmp("intervalBorders", name)) return 1;
5348 0 : if (!strcmp("coordIndex", name)) return 2;
5349 0 : if (!strcmp("displacements", name)) return 3;
5350 0 : return -1;
5351 0 : }
5352 : static Bool FaceDefMesh_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
5353 : {
5354 0 : switch (FieldIndex) {
5355 : case 1:
5356 0 : *AType = 0;
5357 0 : *QType = 0;
5358 0 : return 1;
5359 : case 2:
5360 0 : *AType = 0;
5361 0 : *QType = 0;
5362 0 : return 1;
5363 : case 3:
5364 0 : *AType = 0;
5365 0 : *QType = 0;
5366 0 : return 1;
5367 : default:
5368 0 : return 0;
5369 : }
5370 0 : }
5371 :
5372 :
5373 :
5374 : GF_Node *FaceDefMesh_Create()
5375 : {
5376 : M_FaceDefMesh *p;
5377 0 : GF_SAFEALLOC(p, M_FaceDefMesh);
5378 0 : if(!p) return NULL;
5379 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FaceDefMesh);
5380 :
5381 : /*default field values*/
5382 0 : return (GF_Node *)p;
5383 0 : }
5384 :
5385 :
5386 : /*
5387 : FaceDefTables Node deletion
5388 : */
5389 :
5390 : static void FaceDefTables_Del(GF_Node *node)
5391 : {
5392 0 : M_FaceDefTables *p = (M_FaceDefTables *) node;
5393 0 : gf_node_unregister_children((GF_Node *) p, p->faceDefMesh);
5394 0 : gf_node_unregister_children((GF_Node *) p, p->faceDefTransform);
5395 0 : gf_node_free((GF_Node *) p);
5396 0 : }
5397 :
5398 : static const u16 FaceDefTables_Def2All[] = { 0, 1, 2, 3};
5399 : static const u16 FaceDefTables_In2All[] = { 2, 3};
5400 : static const u16 FaceDefTables_Out2All[] = { 2, 3};
5401 :
5402 : static u32 FaceDefTables_get_field_count(GF_Node *node, u8 IndexMode)
5403 : {
5404 0 : switch(IndexMode) {
5405 : case GF_SG_FIELD_CODING_IN:
5406 0 : return 2;
5407 : case GF_SG_FIELD_CODING_DEF:
5408 0 : return 4;
5409 : case GF_SG_FIELD_CODING_OUT:
5410 0 : return 2;
5411 : case GF_SG_FIELD_CODING_DYN:
5412 0 : return 0;
5413 : default:
5414 0 : return 4;
5415 : }
5416 0 : }
5417 :
5418 : static GF_Err FaceDefTables_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
5419 : {
5420 0 : switch(IndexMode) {
5421 : case GF_SG_FIELD_CODING_IN:
5422 0 : *allField = FaceDefTables_In2All[inField];
5423 0 : return GF_OK;
5424 : case GF_SG_FIELD_CODING_DEF:
5425 0 : *allField = FaceDefTables_Def2All[inField];
5426 0 : return GF_OK;
5427 : case GF_SG_FIELD_CODING_OUT:
5428 0 : *allField = FaceDefTables_Out2All[inField];
5429 0 : return GF_OK;
5430 : default:
5431 0 : return GF_BAD_PARAM;
5432 : }
5433 0 : }
5434 : static GF_Err FaceDefTables_get_field(GF_Node *node, GF_FieldInfo *info)
5435 : {
5436 0 : switch (info->fieldIndex) {
5437 : case 0:
5438 0 : info->name = "fapID";
5439 0 : info->eventType = GF_SG_EVENT_FIELD;
5440 0 : info->fieldType = GF_SG_VRML_SFINT32;
5441 0 : info->far_ptr = & ((M_FaceDefTables *) node)->fapID;
5442 0 : return GF_OK;
5443 : case 1:
5444 0 : info->name = "highLevelSelect";
5445 0 : info->eventType = GF_SG_EVENT_FIELD;
5446 0 : info->fieldType = GF_SG_VRML_SFINT32;
5447 0 : info->far_ptr = & ((M_FaceDefTables *) node)->highLevelSelect;
5448 0 : return GF_OK;
5449 : case 2:
5450 0 : info->name = "faceDefMesh";
5451 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5452 0 : info->fieldType = GF_SG_VRML_MFNODE;
5453 0 : info->NDTtype = NDT_SFFaceDefMeshNode;
5454 0 : info->far_ptr = & ((M_FaceDefTables *)node)->faceDefMesh;
5455 0 : return GF_OK;
5456 : case 3:
5457 0 : info->name = "faceDefTransform";
5458 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5459 0 : info->fieldType = GF_SG_VRML_MFNODE;
5460 0 : info->NDTtype = NDT_SFFaceDefTransformNode;
5461 0 : info->far_ptr = & ((M_FaceDefTables *)node)->faceDefTransform;
5462 0 : return GF_OK;
5463 : default:
5464 0 : return GF_BAD_PARAM;
5465 : }
5466 0 : }
5467 :
5468 :
5469 : static s32 FaceDefTables_get_field_index_by_name(char *name)
5470 : {
5471 0 : if (!strcmp("fapID", name)) return 0;
5472 0 : if (!strcmp("highLevelSelect", name)) return 1;
5473 0 : if (!strcmp("faceDefMesh", name)) return 2;
5474 0 : if (!strcmp("faceDefTransform", name)) return 3;
5475 0 : return -1;
5476 0 : }
5477 : static Bool FaceDefTables_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
5478 : {
5479 0 : switch (FieldIndex) {
5480 : case 0:
5481 0 : *AType = 0;
5482 0 : *QType = 13;
5483 0 : *QT13_bits = 7;
5484 0 : *b_min = FLT2FIX(1);
5485 0 : *b_max = FLT2FIX( 68);
5486 0 : return 1;
5487 : case 1:
5488 0 : *AType = 0;
5489 0 : *QType = 13;
5490 0 : *QT13_bits = 6;
5491 0 : *b_min = FLT2FIX(1);
5492 0 : *b_max = FLT2FIX( 64);
5493 0 : return 1;
5494 : default:
5495 0 : return 0;
5496 : }
5497 0 : }
5498 :
5499 :
5500 :
5501 : GF_Node *FaceDefTables_Create()
5502 : {
5503 : M_FaceDefTables *p;
5504 0 : GF_SAFEALLOC(p, M_FaceDefTables);
5505 0 : if(!p) return NULL;
5506 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FaceDefTables);
5507 :
5508 : /*default field values*/
5509 0 : p->fapID = 1;
5510 0 : p->highLevelSelect = 1;
5511 0 : return (GF_Node *)p;
5512 0 : }
5513 :
5514 :
5515 : /*
5516 : FaceDefTransform Node deletion
5517 : */
5518 :
5519 : static void FaceDefTransform_Del(GF_Node *node)
5520 : {
5521 0 : M_FaceDefTransform *p = (M_FaceDefTransform *) node;
5522 0 : gf_node_unregister((GF_Node *) p->faceSceneGraphNode, (GF_Node *) p);
5523 0 : gf_node_free((GF_Node *) p);
5524 0 : }
5525 :
5526 : static const u16 FaceDefTransform_Def2All[] = { 0, 1, 2, 3, 4};
5527 :
5528 : static u32 FaceDefTransform_get_field_count(GF_Node *node, u8 IndexMode)
5529 : {
5530 0 : switch(IndexMode) {
5531 : case GF_SG_FIELD_CODING_IN:
5532 0 : return 0;
5533 : case GF_SG_FIELD_CODING_DEF:
5534 0 : return 5;
5535 : case GF_SG_FIELD_CODING_OUT:
5536 0 : return 0;
5537 : case GF_SG_FIELD_CODING_DYN:
5538 0 : return 0;
5539 : default:
5540 0 : return 5;
5541 : }
5542 0 : }
5543 :
5544 : static GF_Err FaceDefTransform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
5545 : {
5546 0 : switch(IndexMode) {
5547 : case GF_SG_FIELD_CODING_DEF:
5548 0 : *allField = FaceDefTransform_Def2All[inField];
5549 0 : return GF_OK;
5550 : default:
5551 0 : return GF_BAD_PARAM;
5552 : }
5553 0 : }
5554 : static GF_Err FaceDefTransform_get_field(GF_Node *node, GF_FieldInfo *info)
5555 : {
5556 0 : switch (info->fieldIndex) {
5557 : case 0:
5558 0 : info->name = "faceSceneGraphNode";
5559 0 : info->eventType = GF_SG_EVENT_FIELD;
5560 0 : info->fieldType = GF_SG_VRML_SFNODE;
5561 0 : info->NDTtype = NDT_SF3DNode;
5562 0 : info->far_ptr = & ((M_FaceDefTransform *)node)->faceSceneGraphNode;
5563 0 : return GF_OK;
5564 : case 1:
5565 0 : info->name = "fieldId";
5566 0 : info->eventType = GF_SG_EVENT_FIELD;
5567 0 : info->fieldType = GF_SG_VRML_SFINT32;
5568 0 : info->far_ptr = & ((M_FaceDefTransform *) node)->fieldId;
5569 0 : return GF_OK;
5570 : case 2:
5571 0 : info->name = "rotationDef";
5572 0 : info->eventType = GF_SG_EVENT_FIELD;
5573 0 : info->fieldType = GF_SG_VRML_SFROTATION;
5574 0 : info->far_ptr = & ((M_FaceDefTransform *) node)->rotationDef;
5575 0 : return GF_OK;
5576 : case 3:
5577 0 : info->name = "scaleDef";
5578 0 : info->eventType = GF_SG_EVENT_FIELD;
5579 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
5580 0 : info->far_ptr = & ((M_FaceDefTransform *) node)->scaleDef;
5581 0 : return GF_OK;
5582 : case 4:
5583 0 : info->name = "translationDef";
5584 0 : info->eventType = GF_SG_EVENT_FIELD;
5585 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
5586 0 : info->far_ptr = & ((M_FaceDefTransform *) node)->translationDef;
5587 0 : return GF_OK;
5588 : default:
5589 0 : return GF_BAD_PARAM;
5590 : }
5591 0 : }
5592 :
5593 :
5594 : static s32 FaceDefTransform_get_field_index_by_name(char *name)
5595 : {
5596 0 : if (!strcmp("faceSceneGraphNode", name)) return 0;
5597 0 : if (!strcmp("fieldId", name)) return 1;
5598 0 : if (!strcmp("rotationDef", name)) return 2;
5599 0 : if (!strcmp("scaleDef", name)) return 3;
5600 0 : if (!strcmp("translationDef", name)) return 4;
5601 0 : return -1;
5602 0 : }
5603 : static Bool FaceDefTransform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
5604 : {
5605 0 : switch (FieldIndex) {
5606 : case 2:
5607 0 : *AType = 0;
5608 0 : *QType = 10;
5609 0 : *b_min = FIX_MIN;
5610 0 : *b_max = FIX_MAX;
5611 0 : return 1;
5612 : case 3:
5613 0 : *AType = 0;
5614 0 : *QType = 7;
5615 0 : return 1;
5616 : case 4:
5617 0 : *AType = 0;
5618 0 : *QType = 1;
5619 0 : return 1;
5620 : default:
5621 0 : return 0;
5622 : }
5623 0 : }
5624 :
5625 :
5626 :
5627 : GF_Node *FaceDefTransform_Create()
5628 : {
5629 : M_FaceDefTransform *p;
5630 0 : GF_SAFEALLOC(p, M_FaceDefTransform);
5631 0 : if(!p) return NULL;
5632 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FaceDefTransform);
5633 :
5634 : /*default field values*/
5635 0 : p->fieldId = 1;
5636 0 : p->rotationDef.x = FLT2FIX(0);
5637 0 : p->rotationDef.y = FLT2FIX(0);
5638 0 : p->rotationDef.z = FLT2FIX(1);
5639 0 : p->rotationDef.q = FLT2FIX(0);
5640 0 : p->scaleDef.x = FLT2FIX(1);
5641 0 : p->scaleDef.y = FLT2FIX(1);
5642 0 : p->scaleDef.z = FLT2FIX(1);
5643 0 : p->translationDef.x = FLT2FIX(0);
5644 0 : p->translationDef.y = FLT2FIX(0);
5645 0 : p->translationDef.z = FLT2FIX(0);
5646 0 : return (GF_Node *)p;
5647 0 : }
5648 :
5649 :
5650 : /*
5651 : FAP Node deletion
5652 : */
5653 :
5654 : static void FAP_Del(GF_Node *node)
5655 : {
5656 0 : M_FAP *p = (M_FAP *) node;
5657 0 : gf_node_unregister((GF_Node *) p->viseme, (GF_Node *) p);
5658 0 : gf_node_unregister((GF_Node *) p->expression, (GF_Node *) p);
5659 0 : gf_node_free((GF_Node *) p);
5660 0 : }
5661 :
5662 : static const u16 FAP_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67};
5663 : static const u16 FAP_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67};
5664 : static const u16 FAP_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67};
5665 :
5666 : static u32 FAP_get_field_count(GF_Node *node, u8 IndexMode)
5667 : {
5668 0 : switch(IndexMode) {
5669 : case GF_SG_FIELD_CODING_IN:
5670 0 : return 68;
5671 : case GF_SG_FIELD_CODING_DEF:
5672 0 : return 68;
5673 : case GF_SG_FIELD_CODING_OUT:
5674 0 : return 68;
5675 : case GF_SG_FIELD_CODING_DYN:
5676 0 : return 0;
5677 : default:
5678 0 : return 68;
5679 : }
5680 0 : }
5681 :
5682 : static GF_Err FAP_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
5683 : {
5684 0 : switch(IndexMode) {
5685 : case GF_SG_FIELD_CODING_IN:
5686 0 : *allField = FAP_In2All[inField];
5687 0 : return GF_OK;
5688 : case GF_SG_FIELD_CODING_DEF:
5689 0 : *allField = FAP_Def2All[inField];
5690 0 : return GF_OK;
5691 : case GF_SG_FIELD_CODING_OUT:
5692 0 : *allField = FAP_Out2All[inField];
5693 0 : return GF_OK;
5694 : default:
5695 0 : return GF_BAD_PARAM;
5696 : }
5697 0 : }
5698 : static GF_Err FAP_get_field(GF_Node *node, GF_FieldInfo *info)
5699 : {
5700 0 : switch (info->fieldIndex) {
5701 : case 0:
5702 0 : info->name = "viseme";
5703 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5704 0 : info->fieldType = GF_SG_VRML_SFNODE;
5705 0 : info->NDTtype = NDT_SFVisemeNode;
5706 0 : info->far_ptr = & ((M_FAP *)node)->viseme;
5707 0 : return GF_OK;
5708 : case 1:
5709 0 : info->name = "expression";
5710 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5711 0 : info->fieldType = GF_SG_VRML_SFNODE;
5712 0 : info->NDTtype = NDT_SFExpressionNode;
5713 0 : info->far_ptr = & ((M_FAP *)node)->expression;
5714 0 : return GF_OK;
5715 : case 2:
5716 0 : info->name = "open_jaw";
5717 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5718 0 : info->fieldType = GF_SG_VRML_SFINT32;
5719 0 : info->far_ptr = & ((M_FAP *) node)->open_jaw;
5720 0 : return GF_OK;
5721 : case 3:
5722 0 : info->name = "lower_t_midlip";
5723 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5724 0 : info->fieldType = GF_SG_VRML_SFINT32;
5725 0 : info->far_ptr = & ((M_FAP *) node)->lower_t_midlip;
5726 0 : return GF_OK;
5727 : case 4:
5728 0 : info->name = "raise_b_midlip";
5729 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5730 0 : info->fieldType = GF_SG_VRML_SFINT32;
5731 0 : info->far_ptr = & ((M_FAP *) node)->raise_b_midlip;
5732 0 : return GF_OK;
5733 : case 5:
5734 0 : info->name = "stretch_l_corner";
5735 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5736 0 : info->fieldType = GF_SG_VRML_SFINT32;
5737 0 : info->far_ptr = & ((M_FAP *) node)->stretch_l_corner;
5738 0 : return GF_OK;
5739 : case 6:
5740 0 : info->name = "stretch_r_corner";
5741 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5742 0 : info->fieldType = GF_SG_VRML_SFINT32;
5743 0 : info->far_ptr = & ((M_FAP *) node)->stretch_r_corner;
5744 0 : return GF_OK;
5745 : case 7:
5746 0 : info->name = "lower_t_lip_lm";
5747 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5748 0 : info->fieldType = GF_SG_VRML_SFINT32;
5749 0 : info->far_ptr = & ((M_FAP *) node)->lower_t_lip_lm;
5750 0 : return GF_OK;
5751 : case 8:
5752 0 : info->name = "lower_t_lip_rm";
5753 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5754 0 : info->fieldType = GF_SG_VRML_SFINT32;
5755 0 : info->far_ptr = & ((M_FAP *) node)->lower_t_lip_rm;
5756 0 : return GF_OK;
5757 : case 9:
5758 0 : info->name = "lower_b_lip_lm";
5759 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5760 0 : info->fieldType = GF_SG_VRML_SFINT32;
5761 0 : info->far_ptr = & ((M_FAP *) node)->lower_b_lip_lm;
5762 0 : return GF_OK;
5763 : case 10:
5764 0 : info->name = "lower_b_lip_rm";
5765 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5766 0 : info->fieldType = GF_SG_VRML_SFINT32;
5767 0 : info->far_ptr = & ((M_FAP *) node)->lower_b_lip_rm;
5768 0 : return GF_OK;
5769 : case 11:
5770 0 : info->name = "raise_l_cornerlip";
5771 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5772 0 : info->fieldType = GF_SG_VRML_SFINT32;
5773 0 : info->far_ptr = & ((M_FAP *) node)->raise_l_cornerlip;
5774 0 : return GF_OK;
5775 : case 12:
5776 0 : info->name = "raise_r_cornerlip";
5777 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5778 0 : info->fieldType = GF_SG_VRML_SFINT32;
5779 0 : info->far_ptr = & ((M_FAP *) node)->raise_r_cornerlip;
5780 0 : return GF_OK;
5781 : case 13:
5782 0 : info->name = "thrust_jaw";
5783 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5784 0 : info->fieldType = GF_SG_VRML_SFINT32;
5785 0 : info->far_ptr = & ((M_FAP *) node)->thrust_jaw;
5786 0 : return GF_OK;
5787 : case 14:
5788 0 : info->name = "shift_jaw";
5789 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5790 0 : info->fieldType = GF_SG_VRML_SFINT32;
5791 0 : info->far_ptr = & ((M_FAP *) node)->shift_jaw;
5792 0 : return GF_OK;
5793 : case 15:
5794 0 : info->name = "push_b_lip";
5795 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5796 0 : info->fieldType = GF_SG_VRML_SFINT32;
5797 0 : info->far_ptr = & ((M_FAP *) node)->push_b_lip;
5798 0 : return GF_OK;
5799 : case 16:
5800 0 : info->name = "push_t_lip";
5801 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5802 0 : info->fieldType = GF_SG_VRML_SFINT32;
5803 0 : info->far_ptr = & ((M_FAP *) node)->push_t_lip;
5804 0 : return GF_OK;
5805 : case 17:
5806 0 : info->name = "depress_chin";
5807 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5808 0 : info->fieldType = GF_SG_VRML_SFINT32;
5809 0 : info->far_ptr = & ((M_FAP *) node)->depress_chin;
5810 0 : return GF_OK;
5811 : case 18:
5812 0 : info->name = "close_t_l_eyelid";
5813 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5814 0 : info->fieldType = GF_SG_VRML_SFINT32;
5815 0 : info->far_ptr = & ((M_FAP *) node)->close_t_l_eyelid;
5816 0 : return GF_OK;
5817 : case 19:
5818 0 : info->name = "close_t_r_eyelid";
5819 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5820 0 : info->fieldType = GF_SG_VRML_SFINT32;
5821 0 : info->far_ptr = & ((M_FAP *) node)->close_t_r_eyelid;
5822 0 : return GF_OK;
5823 : case 20:
5824 0 : info->name = "close_b_l_eyelid";
5825 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5826 0 : info->fieldType = GF_SG_VRML_SFINT32;
5827 0 : info->far_ptr = & ((M_FAP *) node)->close_b_l_eyelid;
5828 0 : return GF_OK;
5829 : case 21:
5830 0 : info->name = "close_b_r_eyelid";
5831 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5832 0 : info->fieldType = GF_SG_VRML_SFINT32;
5833 0 : info->far_ptr = & ((M_FAP *) node)->close_b_r_eyelid;
5834 0 : return GF_OK;
5835 : case 22:
5836 0 : info->name = "yaw_l_eyeball";
5837 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5838 0 : info->fieldType = GF_SG_VRML_SFINT32;
5839 0 : info->far_ptr = & ((M_FAP *) node)->yaw_l_eyeball;
5840 0 : return GF_OK;
5841 : case 23:
5842 0 : info->name = "yaw_r_eyeball";
5843 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5844 0 : info->fieldType = GF_SG_VRML_SFINT32;
5845 0 : info->far_ptr = & ((M_FAP *) node)->yaw_r_eyeball;
5846 0 : return GF_OK;
5847 : case 24:
5848 0 : info->name = "pitch_l_eyeball";
5849 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5850 0 : info->fieldType = GF_SG_VRML_SFINT32;
5851 0 : info->far_ptr = & ((M_FAP *) node)->pitch_l_eyeball;
5852 0 : return GF_OK;
5853 : case 25:
5854 0 : info->name = "pitch_r_eyeball";
5855 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5856 0 : info->fieldType = GF_SG_VRML_SFINT32;
5857 0 : info->far_ptr = & ((M_FAP *) node)->pitch_r_eyeball;
5858 0 : return GF_OK;
5859 : case 26:
5860 0 : info->name = "thrust_l_eyeball";
5861 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5862 0 : info->fieldType = GF_SG_VRML_SFINT32;
5863 0 : info->far_ptr = & ((M_FAP *) node)->thrust_l_eyeball;
5864 0 : return GF_OK;
5865 : case 27:
5866 0 : info->name = "thrust_r_eyeball";
5867 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5868 0 : info->fieldType = GF_SG_VRML_SFINT32;
5869 0 : info->far_ptr = & ((M_FAP *) node)->thrust_r_eyeball;
5870 0 : return GF_OK;
5871 : case 28:
5872 0 : info->name = "dilate_l_pupil";
5873 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5874 0 : info->fieldType = GF_SG_VRML_SFINT32;
5875 0 : info->far_ptr = & ((M_FAP *) node)->dilate_l_pupil;
5876 0 : return GF_OK;
5877 : case 29:
5878 0 : info->name = "dilate_r_pupil";
5879 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5880 0 : info->fieldType = GF_SG_VRML_SFINT32;
5881 0 : info->far_ptr = & ((M_FAP *) node)->dilate_r_pupil;
5882 0 : return GF_OK;
5883 : case 30:
5884 0 : info->name = "raise_l_i_eyebrow";
5885 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5886 0 : info->fieldType = GF_SG_VRML_SFINT32;
5887 0 : info->far_ptr = & ((M_FAP *) node)->raise_l_i_eyebrow;
5888 0 : return GF_OK;
5889 : case 31:
5890 0 : info->name = "raise_r_i_eyebrow";
5891 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5892 0 : info->fieldType = GF_SG_VRML_SFINT32;
5893 0 : info->far_ptr = & ((M_FAP *) node)->raise_r_i_eyebrow;
5894 0 : return GF_OK;
5895 : case 32:
5896 0 : info->name = "raise_l_m_eyebrow";
5897 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5898 0 : info->fieldType = GF_SG_VRML_SFINT32;
5899 0 : info->far_ptr = & ((M_FAP *) node)->raise_l_m_eyebrow;
5900 0 : return GF_OK;
5901 : case 33:
5902 0 : info->name = "raise_r_m_eyebrow";
5903 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5904 0 : info->fieldType = GF_SG_VRML_SFINT32;
5905 0 : info->far_ptr = & ((M_FAP *) node)->raise_r_m_eyebrow;
5906 0 : return GF_OK;
5907 : case 34:
5908 0 : info->name = "raise_l_o_eyebrow";
5909 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5910 0 : info->fieldType = GF_SG_VRML_SFINT32;
5911 0 : info->far_ptr = & ((M_FAP *) node)->raise_l_o_eyebrow;
5912 0 : return GF_OK;
5913 : case 35:
5914 0 : info->name = "raise_r_o_eyebrow";
5915 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5916 0 : info->fieldType = GF_SG_VRML_SFINT32;
5917 0 : info->far_ptr = & ((M_FAP *) node)->raise_r_o_eyebrow;
5918 0 : return GF_OK;
5919 : case 36:
5920 0 : info->name = "squeeze_l_eyebrow";
5921 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5922 0 : info->fieldType = GF_SG_VRML_SFINT32;
5923 0 : info->far_ptr = & ((M_FAP *) node)->squeeze_l_eyebrow;
5924 0 : return GF_OK;
5925 : case 37:
5926 0 : info->name = "squeeze_r_eyebrow";
5927 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5928 0 : info->fieldType = GF_SG_VRML_SFINT32;
5929 0 : info->far_ptr = & ((M_FAP *) node)->squeeze_r_eyebrow;
5930 0 : return GF_OK;
5931 : case 38:
5932 0 : info->name = "puff_l_cheek";
5933 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5934 0 : info->fieldType = GF_SG_VRML_SFINT32;
5935 0 : info->far_ptr = & ((M_FAP *) node)->puff_l_cheek;
5936 0 : return GF_OK;
5937 : case 39:
5938 0 : info->name = "puff_r_cheek";
5939 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5940 0 : info->fieldType = GF_SG_VRML_SFINT32;
5941 0 : info->far_ptr = & ((M_FAP *) node)->puff_r_cheek;
5942 0 : return GF_OK;
5943 : case 40:
5944 0 : info->name = "lift_l_cheek";
5945 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5946 0 : info->fieldType = GF_SG_VRML_SFINT32;
5947 0 : info->far_ptr = & ((M_FAP *) node)->lift_l_cheek;
5948 0 : return GF_OK;
5949 : case 41:
5950 0 : info->name = "lift_r_cheek";
5951 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5952 0 : info->fieldType = GF_SG_VRML_SFINT32;
5953 0 : info->far_ptr = & ((M_FAP *) node)->lift_r_cheek;
5954 0 : return GF_OK;
5955 : case 42:
5956 0 : info->name = "shift_tongue_tip";
5957 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5958 0 : info->fieldType = GF_SG_VRML_SFINT32;
5959 0 : info->far_ptr = & ((M_FAP *) node)->shift_tongue_tip;
5960 0 : return GF_OK;
5961 : case 43:
5962 0 : info->name = "raise_tongue_tip";
5963 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5964 0 : info->fieldType = GF_SG_VRML_SFINT32;
5965 0 : info->far_ptr = & ((M_FAP *) node)->raise_tongue_tip;
5966 0 : return GF_OK;
5967 : case 44:
5968 0 : info->name = "thrust_tongue_tip";
5969 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5970 0 : info->fieldType = GF_SG_VRML_SFINT32;
5971 0 : info->far_ptr = & ((M_FAP *) node)->thrust_tongue_tip;
5972 0 : return GF_OK;
5973 : case 45:
5974 0 : info->name = "raise_tongue";
5975 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5976 0 : info->fieldType = GF_SG_VRML_SFINT32;
5977 0 : info->far_ptr = & ((M_FAP *) node)->raise_tongue;
5978 0 : return GF_OK;
5979 : case 46:
5980 0 : info->name = "tongue_roll";
5981 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5982 0 : info->fieldType = GF_SG_VRML_SFINT32;
5983 0 : info->far_ptr = & ((M_FAP *) node)->tongue_roll;
5984 0 : return GF_OK;
5985 : case 47:
5986 0 : info->name = "head_pitch";
5987 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5988 0 : info->fieldType = GF_SG_VRML_SFINT32;
5989 0 : info->far_ptr = & ((M_FAP *) node)->head_pitch;
5990 0 : return GF_OK;
5991 : case 48:
5992 0 : info->name = "head_yaw";
5993 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5994 0 : info->fieldType = GF_SG_VRML_SFINT32;
5995 0 : info->far_ptr = & ((M_FAP *) node)->head_yaw;
5996 0 : return GF_OK;
5997 : case 49:
5998 0 : info->name = "head_roll";
5999 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6000 0 : info->fieldType = GF_SG_VRML_SFINT32;
6001 0 : info->far_ptr = & ((M_FAP *) node)->head_roll;
6002 0 : return GF_OK;
6003 : case 50:
6004 0 : info->name = "lower_t_midlip_o";
6005 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6006 0 : info->fieldType = GF_SG_VRML_SFINT32;
6007 0 : info->far_ptr = & ((M_FAP *) node)->lower_t_midlip_o;
6008 0 : return GF_OK;
6009 : case 51:
6010 0 : info->name = "raise_b_midlip_o";
6011 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6012 0 : info->fieldType = GF_SG_VRML_SFINT32;
6013 0 : info->far_ptr = & ((M_FAP *) node)->raise_b_midlip_o;
6014 0 : return GF_OK;
6015 : case 52:
6016 0 : info->name = "stretch_l_cornerlip";
6017 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6018 0 : info->fieldType = GF_SG_VRML_SFINT32;
6019 0 : info->far_ptr = & ((M_FAP *) node)->stretch_l_cornerlip;
6020 0 : return GF_OK;
6021 : case 53:
6022 0 : info->name = "stretch_r_cornerlip";
6023 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6024 0 : info->fieldType = GF_SG_VRML_SFINT32;
6025 0 : info->far_ptr = & ((M_FAP *) node)->stretch_r_cornerlip;
6026 0 : return GF_OK;
6027 : case 54:
6028 0 : info->name = "lower_t_lip_lm_o";
6029 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6030 0 : info->fieldType = GF_SG_VRML_SFINT32;
6031 0 : info->far_ptr = & ((M_FAP *) node)->lower_t_lip_lm_o;
6032 0 : return GF_OK;
6033 : case 55:
6034 0 : info->name = "lower_t_lip_rm_o";
6035 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6036 0 : info->fieldType = GF_SG_VRML_SFINT32;
6037 0 : info->far_ptr = & ((M_FAP *) node)->lower_t_lip_rm_o;
6038 0 : return GF_OK;
6039 : case 56:
6040 0 : info->name = "raise_b_lip_lm_o";
6041 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6042 0 : info->fieldType = GF_SG_VRML_SFINT32;
6043 0 : info->far_ptr = & ((M_FAP *) node)->raise_b_lip_lm_o;
6044 0 : return GF_OK;
6045 : case 57:
6046 0 : info->name = "raise_b_lip_rm_o";
6047 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6048 0 : info->fieldType = GF_SG_VRML_SFINT32;
6049 0 : info->far_ptr = & ((M_FAP *) node)->raise_b_lip_rm_o;
6050 0 : return GF_OK;
6051 : case 58:
6052 0 : info->name = "raise_l_cornerlip_o";
6053 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6054 0 : info->fieldType = GF_SG_VRML_SFINT32;
6055 0 : info->far_ptr = & ((M_FAP *) node)->raise_l_cornerlip_o;
6056 0 : return GF_OK;
6057 : case 59:
6058 0 : info->name = "raise_r_cornerlip_o";
6059 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6060 0 : info->fieldType = GF_SG_VRML_SFINT32;
6061 0 : info->far_ptr = & ((M_FAP *) node)->raise_r_cornerlip_o;
6062 0 : return GF_OK;
6063 : case 60:
6064 0 : info->name = "stretch_l_nose";
6065 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6066 0 : info->fieldType = GF_SG_VRML_SFINT32;
6067 0 : info->far_ptr = & ((M_FAP *) node)->stretch_l_nose;
6068 0 : return GF_OK;
6069 : case 61:
6070 0 : info->name = "stretch_r_nose";
6071 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6072 0 : info->fieldType = GF_SG_VRML_SFINT32;
6073 0 : info->far_ptr = & ((M_FAP *) node)->stretch_r_nose;
6074 0 : return GF_OK;
6075 : case 62:
6076 0 : info->name = "raise_nose";
6077 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6078 0 : info->fieldType = GF_SG_VRML_SFINT32;
6079 0 : info->far_ptr = & ((M_FAP *) node)->raise_nose;
6080 0 : return GF_OK;
6081 : case 63:
6082 0 : info->name = "bend_nose";
6083 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6084 0 : info->fieldType = GF_SG_VRML_SFINT32;
6085 0 : info->far_ptr = & ((M_FAP *) node)->bend_nose;
6086 0 : return GF_OK;
6087 : case 64:
6088 0 : info->name = "raise_l_ear";
6089 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6090 0 : info->fieldType = GF_SG_VRML_SFINT32;
6091 0 : info->far_ptr = & ((M_FAP *) node)->raise_l_ear;
6092 0 : return GF_OK;
6093 : case 65:
6094 0 : info->name = "raise_r_ear";
6095 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6096 0 : info->fieldType = GF_SG_VRML_SFINT32;
6097 0 : info->far_ptr = & ((M_FAP *) node)->raise_r_ear;
6098 0 : return GF_OK;
6099 : case 66:
6100 0 : info->name = "pull_l_ear";
6101 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6102 0 : info->fieldType = GF_SG_VRML_SFINT32;
6103 0 : info->far_ptr = & ((M_FAP *) node)->pull_l_ear;
6104 0 : return GF_OK;
6105 : case 67:
6106 0 : info->name = "pull_r_ear";
6107 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6108 0 : info->fieldType = GF_SG_VRML_SFINT32;
6109 0 : info->far_ptr = & ((M_FAP *) node)->pull_r_ear;
6110 0 : return GF_OK;
6111 : default:
6112 0 : return GF_BAD_PARAM;
6113 : }
6114 0 : }
6115 :
6116 :
6117 : static s32 FAP_get_field_index_by_name(char *name)
6118 : {
6119 0 : if (!strcmp("viseme", name)) return 0;
6120 0 : if (!strcmp("expression", name)) return 1;
6121 0 : if (!strcmp("open_jaw", name)) return 2;
6122 0 : if (!strcmp("lower_t_midlip", name)) return 3;
6123 0 : if (!strcmp("raise_b_midlip", name)) return 4;
6124 0 : if (!strcmp("stretch_l_corner", name)) return 5;
6125 0 : if (!strcmp("stretch_r_corner", name)) return 6;
6126 0 : if (!strcmp("lower_t_lip_lm", name)) return 7;
6127 0 : if (!strcmp("lower_t_lip_rm", name)) return 8;
6128 0 : if (!strcmp("lower_b_lip_lm", name)) return 9;
6129 0 : if (!strcmp("lower_b_lip_rm", name)) return 10;
6130 0 : if (!strcmp("raise_l_cornerlip", name)) return 11;
6131 0 : if (!strcmp("raise_r_cornerlip", name)) return 12;
6132 0 : if (!strcmp("thrust_jaw", name)) return 13;
6133 0 : if (!strcmp("shift_jaw", name)) return 14;
6134 0 : if (!strcmp("push_b_lip", name)) return 15;
6135 0 : if (!strcmp("push_t_lip", name)) return 16;
6136 0 : if (!strcmp("depress_chin", name)) return 17;
6137 0 : if (!strcmp("close_t_l_eyelid", name)) return 18;
6138 0 : if (!strcmp("close_t_r_eyelid", name)) return 19;
6139 0 : if (!strcmp("close_b_l_eyelid", name)) return 20;
6140 0 : if (!strcmp("close_b_r_eyelid", name)) return 21;
6141 0 : if (!strcmp("yaw_l_eyeball", name)) return 22;
6142 0 : if (!strcmp("yaw_r_eyeball", name)) return 23;
6143 0 : if (!strcmp("pitch_l_eyeball", name)) return 24;
6144 0 : if (!strcmp("pitch_r_eyeball", name)) return 25;
6145 0 : if (!strcmp("thrust_l_eyeball", name)) return 26;
6146 0 : if (!strcmp("thrust_r_eyeball", name)) return 27;
6147 0 : if (!strcmp("dilate_l_pupil", name)) return 28;
6148 0 : if (!strcmp("dilate_r_pupil", name)) return 29;
6149 0 : if (!strcmp("raise_l_i_eyebrow", name)) return 30;
6150 0 : if (!strcmp("raise_r_i_eyebrow", name)) return 31;
6151 0 : if (!strcmp("raise_l_m_eyebrow", name)) return 32;
6152 0 : if (!strcmp("raise_r_m_eyebrow", name)) return 33;
6153 0 : if (!strcmp("raise_l_o_eyebrow", name)) return 34;
6154 0 : if (!strcmp("raise_r_o_eyebrow", name)) return 35;
6155 0 : if (!strcmp("squeeze_l_eyebrow", name)) return 36;
6156 0 : if (!strcmp("squeeze_r_eyebrow", name)) return 37;
6157 0 : if (!strcmp("puff_l_cheek", name)) return 38;
6158 0 : if (!strcmp("puff_r_cheek", name)) return 39;
6159 0 : if (!strcmp("lift_l_cheek", name)) return 40;
6160 0 : if (!strcmp("lift_r_cheek", name)) return 41;
6161 0 : if (!strcmp("shift_tongue_tip", name)) return 42;
6162 0 : if (!strcmp("raise_tongue_tip", name)) return 43;
6163 0 : if (!strcmp("thrust_tongue_tip", name)) return 44;
6164 0 : if (!strcmp("raise_tongue", name)) return 45;
6165 0 : if (!strcmp("tongue_roll", name)) return 46;
6166 0 : if (!strcmp("head_pitch", name)) return 47;
6167 0 : if (!strcmp("head_yaw", name)) return 48;
6168 0 : if (!strcmp("head_roll", name)) return 49;
6169 0 : if (!strcmp("lower_t_midlip_o", name)) return 50;
6170 0 : if (!strcmp("raise_b_midlip_o", name)) return 51;
6171 0 : if (!strcmp("stretch_l_cornerlip", name)) return 52;
6172 0 : if (!strcmp("stretch_r_cornerlip", name)) return 53;
6173 0 : if (!strcmp("lower_t_lip_lm_o", name)) return 54;
6174 0 : if (!strcmp("lower_t_lip_rm_o", name)) return 55;
6175 0 : if (!strcmp("raise_b_lip_lm_o", name)) return 56;
6176 0 : if (!strcmp("raise_b_lip_rm_o", name)) return 57;
6177 0 : if (!strcmp("raise_l_cornerlip_o", name)) return 58;
6178 0 : if (!strcmp("raise_r_cornerlip_o", name)) return 59;
6179 0 : if (!strcmp("stretch_l_nose", name)) return 60;
6180 0 : if (!strcmp("stretch_r_nose", name)) return 61;
6181 0 : if (!strcmp("raise_nose", name)) return 62;
6182 0 : if (!strcmp("bend_nose", name)) return 63;
6183 0 : if (!strcmp("raise_l_ear", name)) return 64;
6184 0 : if (!strcmp("raise_r_ear", name)) return 65;
6185 0 : if (!strcmp("pull_l_ear", name)) return 66;
6186 0 : if (!strcmp("pull_r_ear", name)) return 67;
6187 0 : return -1;
6188 0 : }
6189 : static Bool FAP_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
6190 : {
6191 0 : switch (FieldIndex) {
6192 : case 2:
6193 0 : *AType = 0;
6194 0 : *QType = 0;
6195 0 : *b_min = FLT2FIX(0);
6196 0 : *b_max = FIX_MAX;
6197 0 : return 1;
6198 : case 3:
6199 0 : *AType = 0;
6200 0 : *QType = 0;
6201 0 : *b_min = FIX_MIN;
6202 0 : *b_max = FIX_MAX;
6203 0 : return 1;
6204 : case 4:
6205 0 : *AType = 0;
6206 0 : *QType = 0;
6207 0 : *b_min = FIX_MIN;
6208 0 : *b_max = FIX_MAX;
6209 0 : return 1;
6210 : case 5:
6211 0 : *AType = 0;
6212 0 : *QType = 0;
6213 0 : *b_min = FIX_MIN;
6214 0 : *b_max = FIX_MAX;
6215 0 : return 1;
6216 : case 6:
6217 0 : *AType = 0;
6218 0 : *QType = 0;
6219 0 : *b_min = FIX_MIN;
6220 0 : *b_max = FIX_MAX;
6221 0 : return 1;
6222 : case 7:
6223 0 : *AType = 0;
6224 0 : *QType = 0;
6225 0 : *b_min = FIX_MIN;
6226 0 : *b_max = FIX_MAX;
6227 0 : return 1;
6228 : case 8:
6229 0 : *AType = 0;
6230 0 : *QType = 0;
6231 0 : *b_min = FIX_MIN;
6232 0 : *b_max = FIX_MAX;
6233 0 : return 1;
6234 : case 9:
6235 0 : *AType = 0;
6236 0 : *QType = 0;
6237 0 : *b_min = FIX_MIN;
6238 0 : *b_max = FIX_MAX;
6239 0 : return 1;
6240 : case 10:
6241 0 : *AType = 0;
6242 0 : *QType = 0;
6243 0 : *b_min = FIX_MIN;
6244 0 : *b_max = FIX_MAX;
6245 0 : return 1;
6246 : case 11:
6247 0 : *AType = 0;
6248 0 : *QType = 0;
6249 0 : *b_min = FIX_MIN;
6250 0 : *b_max = FIX_MAX;
6251 0 : return 1;
6252 : case 12:
6253 0 : *AType = 0;
6254 0 : *QType = 0;
6255 0 : *b_min = FIX_MIN;
6256 0 : *b_max = FIX_MAX;
6257 0 : return 1;
6258 : case 13:
6259 0 : *AType = 0;
6260 0 : *QType = 0;
6261 0 : *b_min = FLT2FIX(0);
6262 0 : *b_max = FIX_MAX;
6263 0 : return 1;
6264 : case 14:
6265 0 : *AType = 0;
6266 0 : *QType = 0;
6267 0 : *b_min = FIX_MIN;
6268 0 : *b_max = FIX_MAX;
6269 0 : return 1;
6270 : case 15:
6271 0 : *AType = 0;
6272 0 : *QType = 0;
6273 0 : *b_min = FIX_MIN;
6274 0 : *b_max = FIX_MAX;
6275 0 : return 1;
6276 : case 16:
6277 0 : *AType = 0;
6278 0 : *QType = 0;
6279 0 : *b_min = FIX_MIN;
6280 0 : *b_max = FIX_MAX;
6281 0 : return 1;
6282 : case 17:
6283 0 : *AType = 0;
6284 0 : *QType = 0;
6285 0 : *b_min = FIX_MIN;
6286 0 : *b_max = FIX_MAX;
6287 0 : return 1;
6288 : case 18:
6289 0 : *AType = 0;
6290 0 : *QType = 0;
6291 0 : *b_min = FIX_MIN;
6292 0 : *b_max = FIX_MAX;
6293 0 : return 1;
6294 : case 19:
6295 0 : *AType = 0;
6296 0 : *QType = 0;
6297 0 : *b_min = FIX_MIN;
6298 0 : *b_max = FIX_MAX;
6299 0 : return 1;
6300 : case 20:
6301 0 : *AType = 0;
6302 0 : *QType = 0;
6303 0 : *b_min = FIX_MIN;
6304 0 : *b_max = FIX_MAX;
6305 0 : return 1;
6306 : case 21:
6307 0 : *AType = 0;
6308 0 : *QType = 0;
6309 0 : *b_min = FIX_MIN;
6310 0 : *b_max = FIX_MAX;
6311 0 : return 1;
6312 : case 22:
6313 0 : *AType = 0;
6314 0 : *QType = 0;
6315 0 : *b_min = FIX_MIN;
6316 0 : *b_max = FIX_MAX;
6317 0 : return 1;
6318 : case 23:
6319 0 : *AType = 0;
6320 0 : *QType = 0;
6321 0 : *b_min = FIX_MIN;
6322 0 : *b_max = FIX_MAX;
6323 0 : return 1;
6324 : case 24:
6325 0 : *AType = 0;
6326 0 : *QType = 0;
6327 0 : *b_min = FIX_MIN;
6328 0 : *b_max = FIX_MAX;
6329 0 : return 1;
6330 : case 25:
6331 0 : *AType = 0;
6332 0 : *QType = 0;
6333 0 : *b_min = FIX_MIN;
6334 0 : *b_max = FIX_MAX;
6335 0 : return 1;
6336 : case 26:
6337 0 : *AType = 0;
6338 0 : *QType = 0;
6339 0 : *b_min = FIX_MIN;
6340 0 : *b_max = FIX_MAX;
6341 0 : return 1;
6342 : case 27:
6343 0 : *AType = 0;
6344 0 : *QType = 0;
6345 0 : *b_min = FIX_MIN;
6346 0 : *b_max = FIX_MAX;
6347 0 : return 1;
6348 : case 28:
6349 0 : *AType = 0;
6350 0 : *QType = 0;
6351 0 : *b_min = FIX_MIN;
6352 0 : *b_max = FIX_MAX;
6353 0 : return 1;
6354 : case 29:
6355 0 : *AType = 0;
6356 0 : *QType = 0;
6357 0 : *b_min = FIX_MIN;
6358 0 : *b_max = FIX_MAX;
6359 0 : return 1;
6360 : case 30:
6361 0 : *AType = 0;
6362 0 : *QType = 0;
6363 0 : *b_min = FIX_MIN;
6364 0 : *b_max = FIX_MAX;
6365 0 : return 1;
6366 : case 31:
6367 0 : *AType = 0;
6368 0 : *QType = 0;
6369 0 : *b_min = FIX_MIN;
6370 0 : *b_max = FIX_MAX;
6371 0 : return 1;
6372 : case 32:
6373 0 : *AType = 0;
6374 0 : *QType = 0;
6375 0 : *b_min = FIX_MIN;
6376 0 : *b_max = FIX_MAX;
6377 0 : return 1;
6378 : case 33:
6379 0 : *AType = 0;
6380 0 : *QType = 0;
6381 0 : *b_min = FIX_MIN;
6382 0 : *b_max = FIX_MAX;
6383 0 : return 1;
6384 : case 34:
6385 0 : *AType = 0;
6386 0 : *QType = 0;
6387 0 : *b_min = FIX_MIN;
6388 0 : *b_max = FIX_MAX;
6389 0 : return 1;
6390 : case 35:
6391 0 : *AType = 0;
6392 0 : *QType = 0;
6393 0 : *b_min = FIX_MIN;
6394 0 : *b_max = FIX_MAX;
6395 0 : return 1;
6396 : case 36:
6397 0 : *AType = 0;
6398 0 : *QType = 0;
6399 0 : *b_min = FIX_MIN;
6400 0 : *b_max = FIX_MAX;
6401 0 : return 1;
6402 : case 37:
6403 0 : *AType = 0;
6404 0 : *QType = 0;
6405 0 : *b_min = FIX_MIN;
6406 0 : *b_max = FIX_MAX;
6407 0 : return 1;
6408 : case 38:
6409 0 : *AType = 0;
6410 0 : *QType = 0;
6411 0 : *b_min = FIX_MIN;
6412 0 : *b_max = FIX_MAX;
6413 0 : return 1;
6414 : case 39:
6415 0 : *AType = 0;
6416 0 : *QType = 0;
6417 0 : *b_min = FIX_MIN;
6418 0 : *b_max = FIX_MAX;
6419 0 : return 1;
6420 : case 40:
6421 0 : *AType = 0;
6422 0 : *QType = 0;
6423 0 : *b_min = FLT2FIX(0);
6424 0 : *b_max = FIX_MAX;
6425 0 : return 1;
6426 : case 41:
6427 0 : *AType = 0;
6428 0 : *QType = 0;
6429 0 : *b_min = FLT2FIX(0);
6430 0 : *b_max = FIX_MAX;
6431 0 : return 1;
6432 : case 42:
6433 0 : *AType = 0;
6434 0 : *QType = 0;
6435 0 : *b_min = FIX_MIN;
6436 0 : *b_max = FIX_MAX;
6437 0 : return 1;
6438 : case 43:
6439 0 : *AType = 0;
6440 0 : *QType = 0;
6441 0 : *b_min = FIX_MIN;
6442 0 : *b_max = FIX_MAX;
6443 0 : return 1;
6444 : case 44:
6445 0 : *AType = 0;
6446 0 : *QType = 0;
6447 0 : *b_min = FIX_MIN;
6448 0 : *b_max = FIX_MAX;
6449 0 : return 1;
6450 : case 45:
6451 0 : *AType = 0;
6452 0 : *QType = 0;
6453 0 : *b_min = FIX_MIN;
6454 0 : *b_max = FIX_MAX;
6455 0 : return 1;
6456 : case 46:
6457 0 : *AType = 0;
6458 0 : *QType = 0;
6459 0 : *b_min = FLT2FIX(0);
6460 0 : *b_max = FIX_MAX;
6461 0 : return 1;
6462 : case 47:
6463 0 : *AType = 0;
6464 0 : *QType = 0;
6465 0 : *b_min = FIX_MIN;
6466 0 : *b_max = FIX_MAX;
6467 0 : return 1;
6468 : case 48:
6469 0 : *AType = 0;
6470 0 : *QType = 0;
6471 0 : *b_min = FIX_MIN;
6472 0 : *b_max = FIX_MAX;
6473 0 : return 1;
6474 : case 49:
6475 0 : *AType = 0;
6476 0 : *QType = 0;
6477 0 : *b_min = FIX_MIN;
6478 0 : *b_max = FIX_MAX;
6479 0 : return 1;
6480 : case 50:
6481 0 : *AType = 0;
6482 0 : *QType = 0;
6483 0 : *b_min = FIX_MIN;
6484 0 : *b_max = FIX_MAX;
6485 0 : return 1;
6486 : case 51:
6487 0 : *AType = 0;
6488 0 : *QType = 0;
6489 0 : *b_min = FIX_MIN;
6490 0 : *b_max = FIX_MAX;
6491 0 : return 1;
6492 : case 52:
6493 0 : *AType = 0;
6494 0 : *QType = 0;
6495 0 : *b_min = FIX_MIN;
6496 0 : *b_max = FIX_MAX;
6497 0 : return 1;
6498 : case 53:
6499 0 : *AType = 0;
6500 0 : *QType = 0;
6501 0 : *b_min = FIX_MIN;
6502 0 : *b_max = FIX_MAX;
6503 0 : return 1;
6504 : case 54:
6505 0 : *AType = 0;
6506 0 : *QType = 0;
6507 0 : *b_min = FIX_MIN;
6508 0 : *b_max = FIX_MAX;
6509 0 : return 1;
6510 : case 55:
6511 0 : *AType = 0;
6512 0 : *QType = 0;
6513 0 : *b_min = FIX_MIN;
6514 0 : *b_max = FIX_MAX;
6515 0 : return 1;
6516 : case 56:
6517 0 : *AType = 0;
6518 0 : *QType = 0;
6519 0 : *b_min = FIX_MIN;
6520 0 : *b_max = FIX_MAX;
6521 0 : return 1;
6522 : case 57:
6523 0 : *AType = 0;
6524 0 : *QType = 0;
6525 0 : *b_min = FIX_MIN;
6526 0 : *b_max = FIX_MAX;
6527 0 : return 1;
6528 : case 58:
6529 0 : *AType = 0;
6530 0 : *QType = 0;
6531 0 : *b_min = FIX_MIN;
6532 0 : *b_max = FIX_MAX;
6533 0 : return 1;
6534 : case 59:
6535 0 : *AType = 0;
6536 0 : *QType = 0;
6537 0 : *b_min = FIX_MIN;
6538 0 : *b_max = FIX_MAX;
6539 0 : return 1;
6540 : case 60:
6541 0 : *AType = 0;
6542 0 : *QType = 0;
6543 0 : *b_min = FIX_MIN;
6544 0 : *b_max = FIX_MAX;
6545 0 : return 1;
6546 : case 61:
6547 0 : *AType = 0;
6548 0 : *QType = 0;
6549 0 : *b_min = FIX_MIN;
6550 0 : *b_max = FIX_MAX;
6551 0 : return 1;
6552 : case 62:
6553 0 : *AType = 0;
6554 0 : *QType = 0;
6555 0 : *b_min = FIX_MIN;
6556 0 : *b_max = FIX_MAX;
6557 0 : return 1;
6558 : case 63:
6559 0 : *AType = 0;
6560 0 : *QType = 0;
6561 0 : *b_min = FIX_MIN;
6562 0 : *b_max = FIX_MAX;
6563 0 : return 1;
6564 : case 64:
6565 0 : *AType = 0;
6566 0 : *QType = 0;
6567 0 : *b_min = FIX_MIN;
6568 0 : *b_max = FIX_MAX;
6569 0 : return 1;
6570 : case 65:
6571 0 : *AType = 0;
6572 0 : *QType = 0;
6573 0 : *b_min = FIX_MIN;
6574 0 : *b_max = FIX_MAX;
6575 0 : return 1;
6576 : case 66:
6577 0 : *AType = 0;
6578 0 : *QType = 0;
6579 0 : *b_min = FIX_MIN;
6580 0 : *b_max = FIX_MAX;
6581 0 : return 1;
6582 : case 67:
6583 0 : *AType = 0;
6584 0 : *QType = 0;
6585 0 : *b_min = FIX_MIN;
6586 0 : *b_max = FIX_MAX;
6587 0 : return 1;
6588 : default:
6589 0 : return 0;
6590 : }
6591 0 : }
6592 :
6593 :
6594 :
6595 : GF_Node *FAP_Create()
6596 : {
6597 : M_FAP *p;
6598 0 : GF_SAFEALLOC(p, M_FAP);
6599 0 : if(!p) return NULL;
6600 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FAP);
6601 :
6602 : /*default field values*/
6603 0 : p->open_jaw = 1 << 31;
6604 0 : p->lower_t_midlip = 1 << 31;
6605 0 : p->raise_b_midlip = 1 << 31;
6606 0 : p->stretch_l_corner = 1 << 31;
6607 0 : p->stretch_r_corner = 1 << 31;
6608 0 : p->lower_t_lip_lm = 1 << 31;
6609 0 : p->lower_t_lip_rm = 1 << 31;
6610 0 : p->lower_b_lip_lm = 1 << 31;
6611 0 : p->lower_b_lip_rm = 1 << 31;
6612 0 : p->raise_l_cornerlip = 1 << 31;
6613 0 : p->raise_r_cornerlip = 1 << 31;
6614 0 : p->thrust_jaw = 1 << 31;
6615 0 : p->shift_jaw = 1 << 31;
6616 0 : p->push_b_lip = 1 << 31;
6617 0 : p->push_t_lip = 1 << 31;
6618 0 : p->depress_chin = 1 << 31;
6619 0 : p->close_t_l_eyelid = 1 << 31;
6620 0 : p->close_t_r_eyelid = 1 << 31;
6621 0 : p->close_b_l_eyelid = 1 << 31;
6622 0 : p->close_b_r_eyelid = 1 << 31;
6623 0 : p->yaw_l_eyeball = 1 << 31;
6624 0 : p->yaw_r_eyeball = 1 << 31;
6625 0 : p->pitch_l_eyeball = 1 << 31;
6626 0 : p->pitch_r_eyeball = 1 << 31;
6627 0 : p->thrust_l_eyeball = 1 << 31;
6628 0 : p->thrust_r_eyeball = 1 << 31;
6629 0 : p->dilate_l_pupil = 1 << 31;
6630 0 : p->dilate_r_pupil = 1 << 31;
6631 0 : p->raise_l_i_eyebrow = 1 << 31;
6632 0 : p->raise_r_i_eyebrow = 1 << 31;
6633 0 : p->raise_l_m_eyebrow = 1 << 31;
6634 0 : p->raise_r_m_eyebrow = 1 << 31;
6635 0 : p->raise_l_o_eyebrow = 1 << 31;
6636 0 : p->raise_r_o_eyebrow = 1 << 31;
6637 0 : p->squeeze_l_eyebrow = 1 << 31;
6638 0 : p->squeeze_r_eyebrow = 1 << 31;
6639 0 : p->puff_l_cheek = 1 << 31;
6640 0 : p->puff_r_cheek = 1 << 31;
6641 0 : p->lift_l_cheek = 1 << 31;
6642 0 : p->lift_r_cheek = 1 << 31;
6643 0 : p->shift_tongue_tip = 1 << 31;
6644 0 : p->raise_tongue_tip = 1 << 31;
6645 0 : p->thrust_tongue_tip = 1 << 31;
6646 0 : p->raise_tongue = 1 << 31;
6647 0 : p->tongue_roll = 1 << 31;
6648 0 : p->head_pitch = 1 << 31;
6649 0 : p->head_yaw = 1 << 31;
6650 0 : p->head_roll = 1 << 31;
6651 0 : p->lower_t_midlip_o = 1 << 31;
6652 0 : p->raise_b_midlip_o = 1 << 31;
6653 0 : p->stretch_l_cornerlip = 1 << 31;
6654 0 : p->stretch_r_cornerlip = 1 << 31;
6655 0 : p->lower_t_lip_lm_o = 1 << 31;
6656 0 : p->lower_t_lip_rm_o = 1 << 31;
6657 0 : p->raise_b_lip_lm_o = 1 << 31;
6658 0 : p->raise_b_lip_rm_o = 1 << 31;
6659 0 : p->raise_l_cornerlip_o = 1 << 31;
6660 0 : p->raise_r_cornerlip_o = 1 << 31;
6661 0 : p->stretch_l_nose = 1 << 31;
6662 0 : p->stretch_r_nose = 1 << 31;
6663 0 : p->raise_nose = 1 << 31;
6664 0 : p->bend_nose = 1 << 31;
6665 0 : p->raise_l_ear = 1 << 31;
6666 0 : p->raise_r_ear = 1 << 31;
6667 0 : p->pull_l_ear = 1 << 31;
6668 0 : p->pull_r_ear = 1 << 31;
6669 0 : return (GF_Node *)p;
6670 0 : }
6671 :
6672 :
6673 : /*
6674 : FDP Node deletion
6675 : */
6676 :
6677 : static void FDP_Del(GF_Node *node)
6678 : {
6679 0 : M_FDP *p = (M_FDP *) node;
6680 0 : gf_node_unregister((GF_Node *) p->featurePointsCoord, (GF_Node *) p);
6681 0 : gf_node_unregister((GF_Node *) p->textureCoord, (GF_Node *) p);
6682 0 : gf_node_unregister_children((GF_Node *) p, p->faceDefTables);
6683 0 : gf_node_unregister_children((GF_Node *) p, p->faceSceneGraph);
6684 0 : gf_node_free((GF_Node *) p);
6685 0 : }
6686 :
6687 : static const u16 FDP_Def2All[] = { 0, 1, 2, 3, 4};
6688 : static const u16 FDP_In2All[] = { 0, 1, 2, 3};
6689 : static const u16 FDP_Out2All[] = { 0, 1, 2, 3};
6690 :
6691 : static u32 FDP_get_field_count(GF_Node *node, u8 IndexMode)
6692 : {
6693 0 : switch(IndexMode) {
6694 : case GF_SG_FIELD_CODING_IN:
6695 0 : return 4;
6696 : case GF_SG_FIELD_CODING_DEF:
6697 0 : return 5;
6698 : case GF_SG_FIELD_CODING_OUT:
6699 0 : return 4;
6700 : case GF_SG_FIELD_CODING_DYN:
6701 0 : return 0;
6702 : default:
6703 0 : return 5;
6704 : }
6705 0 : }
6706 :
6707 : static GF_Err FDP_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
6708 : {
6709 0 : switch(IndexMode) {
6710 : case GF_SG_FIELD_CODING_IN:
6711 0 : *allField = FDP_In2All[inField];
6712 0 : return GF_OK;
6713 : case GF_SG_FIELD_CODING_DEF:
6714 0 : *allField = FDP_Def2All[inField];
6715 0 : return GF_OK;
6716 : case GF_SG_FIELD_CODING_OUT:
6717 0 : *allField = FDP_Out2All[inField];
6718 0 : return GF_OK;
6719 : default:
6720 0 : return GF_BAD_PARAM;
6721 : }
6722 0 : }
6723 : static GF_Err FDP_get_field(GF_Node *node, GF_FieldInfo *info)
6724 : {
6725 0 : switch (info->fieldIndex) {
6726 : case 0:
6727 0 : info->name = "featurePointsCoord";
6728 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6729 0 : info->fieldType = GF_SG_VRML_SFNODE;
6730 0 : info->NDTtype = NDT_SFCoordinateNode;
6731 0 : info->far_ptr = & ((M_FDP *)node)->featurePointsCoord;
6732 0 : return GF_OK;
6733 : case 1:
6734 0 : info->name = "textureCoord";
6735 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6736 0 : info->fieldType = GF_SG_VRML_SFNODE;
6737 0 : info->NDTtype = NDT_SFTextureCoordinateNode;
6738 0 : info->far_ptr = & ((M_FDP *)node)->textureCoord;
6739 0 : return GF_OK;
6740 : case 2:
6741 0 : info->name = "faceDefTables";
6742 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6743 0 : info->fieldType = GF_SG_VRML_MFNODE;
6744 0 : info->NDTtype = NDT_SFFaceDefTablesNode;
6745 0 : info->far_ptr = & ((M_FDP *)node)->faceDefTables;
6746 0 : return GF_OK;
6747 : case 3:
6748 0 : info->name = "faceSceneGraph";
6749 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6750 0 : info->fieldType = GF_SG_VRML_MFNODE;
6751 0 : info->NDTtype = NDT_SF3DNode;
6752 0 : info->far_ptr = & ((M_FDP *)node)->faceSceneGraph;
6753 0 : return GF_OK;
6754 : case 4:
6755 0 : info->name = "useOrthoTexture";
6756 0 : info->eventType = GF_SG_EVENT_FIELD;
6757 0 : info->fieldType = GF_SG_VRML_SFBOOL;
6758 0 : info->far_ptr = & ((M_FDP *) node)->useOrthoTexture;
6759 0 : return GF_OK;
6760 : default:
6761 0 : return GF_BAD_PARAM;
6762 : }
6763 0 : }
6764 :
6765 :
6766 : static s32 FDP_get_field_index_by_name(char *name)
6767 : {
6768 0 : if (!strcmp("featurePointsCoord", name)) return 0;
6769 0 : if (!strcmp("textureCoord", name)) return 1;
6770 0 : if (!strcmp("faceDefTables", name)) return 2;
6771 0 : if (!strcmp("faceSceneGraph", name)) return 3;
6772 0 : if (!strcmp("useOrthoTexture", name)) return 4;
6773 0 : return -1;
6774 0 : }
6775 : static Bool FDP_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
6776 : {
6777 : switch (FieldIndex) {
6778 : default:
6779 0 : return 0;
6780 : }
6781 : }
6782 :
6783 :
6784 :
6785 : GF_Node *FDP_Create()
6786 : {
6787 : M_FDP *p;
6788 0 : GF_SAFEALLOC(p, M_FDP);
6789 0 : if(!p) return NULL;
6790 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FDP);
6791 :
6792 : /*default field values*/
6793 0 : return (GF_Node *)p;
6794 0 : }
6795 :
6796 :
6797 : /*
6798 : FIT Node deletion
6799 : */
6800 :
6801 : static void FIT_Del(GF_Node *node)
6802 : {
6803 0 : M_FIT *p = (M_FIT *) node;
6804 0 : gf_sg_mfint32_del(p->FAPs);
6805 0 : gf_sg_mfint32_del(p->Graph);
6806 0 : gf_sg_mfint32_del(p->numeratorExp);
6807 0 : gf_sg_mfint32_del(p->denominatorExp);
6808 0 : gf_sg_mfint32_del(p->numeratorImpulse);
6809 0 : gf_sg_mfint32_del(p->numeratorTerms);
6810 0 : gf_sg_mfint32_del(p->denominatorTerms);
6811 0 : gf_sg_mffloat_del(p->numeratorCoefs);
6812 0 : gf_sg_mffloat_del(p->denominatorCoefs);
6813 0 : gf_node_free((GF_Node *) p);
6814 0 : }
6815 :
6816 : static const u16 FIT_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
6817 : static const u16 FIT_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
6818 : static const u16 FIT_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
6819 :
6820 : static u32 FIT_get_field_count(GF_Node *node, u8 IndexMode)
6821 : {
6822 0 : switch(IndexMode) {
6823 : case GF_SG_FIELD_CODING_IN:
6824 0 : return 9;
6825 : case GF_SG_FIELD_CODING_DEF:
6826 0 : return 9;
6827 : case GF_SG_FIELD_CODING_OUT:
6828 0 : return 9;
6829 : case GF_SG_FIELD_CODING_DYN:
6830 0 : return 0;
6831 : default:
6832 0 : return 9;
6833 : }
6834 0 : }
6835 :
6836 : static GF_Err FIT_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
6837 : {
6838 0 : switch(IndexMode) {
6839 : case GF_SG_FIELD_CODING_IN:
6840 0 : *allField = FIT_In2All[inField];
6841 0 : return GF_OK;
6842 : case GF_SG_FIELD_CODING_DEF:
6843 0 : *allField = FIT_Def2All[inField];
6844 0 : return GF_OK;
6845 : case GF_SG_FIELD_CODING_OUT:
6846 0 : *allField = FIT_Out2All[inField];
6847 0 : return GF_OK;
6848 : default:
6849 0 : return GF_BAD_PARAM;
6850 : }
6851 0 : }
6852 : static GF_Err FIT_get_field(GF_Node *node, GF_FieldInfo *info)
6853 : {
6854 0 : switch (info->fieldIndex) {
6855 : case 0:
6856 0 : info->name = "FAPs";
6857 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6858 0 : info->fieldType = GF_SG_VRML_MFINT32;
6859 0 : info->far_ptr = & ((M_FIT *) node)->FAPs;
6860 0 : return GF_OK;
6861 : case 1:
6862 0 : info->name = "Graph";
6863 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6864 0 : info->fieldType = GF_SG_VRML_MFINT32;
6865 0 : info->far_ptr = & ((M_FIT *) node)->Graph;
6866 0 : return GF_OK;
6867 : case 2:
6868 0 : info->name = "numeratorExp";
6869 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6870 0 : info->fieldType = GF_SG_VRML_MFINT32;
6871 0 : info->far_ptr = & ((M_FIT *) node)->numeratorExp;
6872 0 : return GF_OK;
6873 : case 3:
6874 0 : info->name = "denominatorExp";
6875 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6876 0 : info->fieldType = GF_SG_VRML_MFINT32;
6877 0 : info->far_ptr = & ((M_FIT *) node)->denominatorExp;
6878 0 : return GF_OK;
6879 : case 4:
6880 0 : info->name = "numeratorImpulse";
6881 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6882 0 : info->fieldType = GF_SG_VRML_MFINT32;
6883 0 : info->far_ptr = & ((M_FIT *) node)->numeratorImpulse;
6884 0 : return GF_OK;
6885 : case 5:
6886 0 : info->name = "numeratorTerms";
6887 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6888 0 : info->fieldType = GF_SG_VRML_MFINT32;
6889 0 : info->far_ptr = & ((M_FIT *) node)->numeratorTerms;
6890 0 : return GF_OK;
6891 : case 6:
6892 0 : info->name = "denominatorTerms";
6893 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6894 0 : info->fieldType = GF_SG_VRML_MFINT32;
6895 0 : info->far_ptr = & ((M_FIT *) node)->denominatorTerms;
6896 0 : return GF_OK;
6897 : case 7:
6898 0 : info->name = "numeratorCoefs";
6899 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6900 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
6901 0 : info->far_ptr = & ((M_FIT *) node)->numeratorCoefs;
6902 0 : return GF_OK;
6903 : case 8:
6904 0 : info->name = "denominatorCoefs";
6905 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6906 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
6907 0 : info->far_ptr = & ((M_FIT *) node)->denominatorCoefs;
6908 0 : return GF_OK;
6909 : default:
6910 0 : return GF_BAD_PARAM;
6911 : }
6912 0 : }
6913 :
6914 :
6915 : static s32 FIT_get_field_index_by_name(char *name)
6916 : {
6917 0 : if (!strcmp("FAPs", name)) return 0;
6918 0 : if (!strcmp("Graph", name)) return 1;
6919 0 : if (!strcmp("numeratorExp", name)) return 2;
6920 0 : if (!strcmp("denominatorExp", name)) return 3;
6921 0 : if (!strcmp("numeratorImpulse", name)) return 4;
6922 0 : if (!strcmp("numeratorTerms", name)) return 5;
6923 0 : if (!strcmp("denominatorTerms", name)) return 6;
6924 0 : if (!strcmp("numeratorCoefs", name)) return 7;
6925 0 : if (!strcmp("denominatorCoefs", name)) return 8;
6926 0 : return -1;
6927 0 : }
6928 : static Bool FIT_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
6929 : {
6930 0 : switch (FieldIndex) {
6931 : case 0:
6932 0 : *AType = 0;
6933 0 : *QType = 13;
6934 0 : *QT13_bits = 7;
6935 0 : *b_min = FLT2FIX(-1);
6936 0 : *b_max = FLT2FIX(68);
6937 0 : return 1;
6938 : case 1:
6939 0 : *AType = 0;
6940 0 : *QType = 13;
6941 0 : *QT13_bits = 7;
6942 0 : *b_min = FLT2FIX(0);
6943 0 : *b_max = FLT2FIX(68);
6944 0 : return 1;
6945 : case 2:
6946 0 : *AType = 0;
6947 0 : *QType = 13;
6948 0 : *QT13_bits = 4;
6949 0 : *b_min = FLT2FIX(0);
6950 0 : *b_max = FLT2FIX(15);
6951 0 : return 1;
6952 : case 3:
6953 0 : *AType = 0;
6954 0 : *QType = 13;
6955 0 : *QT13_bits = 4;
6956 0 : *b_min = FLT2FIX(0);
6957 0 : *b_max = FLT2FIX(15);
6958 0 : return 1;
6959 : case 4:
6960 0 : *AType = 0;
6961 0 : *QType = 13;
6962 0 : *QT13_bits = 10;
6963 0 : *b_min = FLT2FIX(0);
6964 0 : *b_max = FLT2FIX(1023);
6965 0 : return 1;
6966 : case 5:
6967 0 : *AType = 0;
6968 0 : *QType = 13;
6969 0 : *QT13_bits = 4;
6970 0 : *b_min = FLT2FIX(0);
6971 0 : *b_max = FLT2FIX(10);
6972 0 : return 1;
6973 : case 6:
6974 0 : *AType = 0;
6975 0 : *QType = 13;
6976 0 : *QT13_bits = 4;
6977 0 : *b_min = FLT2FIX(0);
6978 0 : *b_max = FLT2FIX(10);
6979 0 : return 1;
6980 : default:
6981 0 : return 0;
6982 : }
6983 0 : }
6984 :
6985 :
6986 :
6987 : GF_Node *FIT_Create()
6988 : {
6989 : M_FIT *p;
6990 0 : GF_SAFEALLOC(p, M_FIT);
6991 0 : if(!p) return NULL;
6992 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FIT);
6993 :
6994 : /*default field values*/
6995 0 : return (GF_Node *)p;
6996 0 : }
6997 :
6998 :
6999 : /*
7000 : Fog Node deletion
7001 : */
7002 :
7003 : static void Fog_Del(GF_Node *node)
7004 : {
7005 36 : M_Fog *p = (M_Fog *) node;
7006 18 : gf_sg_sfstring_del(p->fogType);
7007 18 : gf_node_free((GF_Node *) p);
7008 18 : }
7009 :
7010 : static const u16 Fog_Def2All[] = { 0, 1, 2};
7011 : static const u16 Fog_In2All[] = { 0, 1, 2, 3};
7012 : static const u16 Fog_Out2All[] = { 0, 1, 2, 4};
7013 : static const u16 Fog_Dyn2All[] = { 0, 2};
7014 :
7015 : static u32 Fog_get_field_count(GF_Node *node, u8 IndexMode)
7016 : {
7017 68 : switch(IndexMode) {
7018 : case GF_SG_FIELD_CODING_IN:
7019 18 : return 4;
7020 : case GF_SG_FIELD_CODING_DEF:
7021 9 : return 3;
7022 : case GF_SG_FIELD_CODING_OUT:
7023 0 : return 4;
7024 : case GF_SG_FIELD_CODING_DYN:
7025 0 : return 2;
7026 : default:
7027 7 : return 5;
7028 : }
7029 34 : }
7030 :
7031 : static GF_Err Fog_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
7032 : {
7033 80 : switch(IndexMode) {
7034 : case GF_SG_FIELD_CODING_IN:
7035 24 : *allField = Fog_In2All[inField];
7036 24 : return GF_OK;
7037 : case GF_SG_FIELD_CODING_DEF:
7038 16 : *allField = Fog_Def2All[inField];
7039 16 : return GF_OK;
7040 : case GF_SG_FIELD_CODING_OUT:
7041 0 : *allField = Fog_Out2All[inField];
7042 0 : return GF_OK;
7043 : case GF_SG_FIELD_CODING_DYN:
7044 0 : *allField = Fog_Dyn2All[inField];
7045 0 : return GF_OK;
7046 : default:
7047 0 : return GF_BAD_PARAM;
7048 : }
7049 40 : }
7050 : static GF_Err Fog_get_field(GF_Node *node, GF_FieldInfo *info)
7051 : {
7052 228 : switch (info->fieldIndex) {
7053 : case 0:
7054 33 : info->name = "color";
7055 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7056 33 : info->fieldType = GF_SG_VRML_SFCOLOR;
7057 33 : info->far_ptr = & ((M_Fog *) node)->color;
7058 33 : return GF_OK;
7059 : case 1:
7060 18 : info->name = "fogType";
7061 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7062 18 : info->fieldType = GF_SG_VRML_SFSTRING;
7063 18 : info->far_ptr = & ((M_Fog *) node)->fogType;
7064 18 : return GF_OK;
7065 : case 2:
7066 41 : info->name = "visibilityRange";
7067 41 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7068 41 : info->fieldType = GF_SG_VRML_SFFLOAT;
7069 41 : info->far_ptr = & ((M_Fog *) node)->visibilityRange;
7070 41 : return GF_OK;
7071 : case 3:
7072 15 : info->name = "set_bind";
7073 15 : info->eventType = GF_SG_EVENT_IN;
7074 15 : info->on_event_in = ((M_Fog *)node)->on_set_bind;
7075 15 : info->fieldType = GF_SG_VRML_SFBOOL;
7076 15 : info->far_ptr = & ((M_Fog *) node)->set_bind;
7077 15 : return GF_OK;
7078 : case 4:
7079 7 : info->name = "isBound";
7080 7 : info->eventType = GF_SG_EVENT_OUT;
7081 7 : info->fieldType = GF_SG_VRML_SFBOOL;
7082 7 : info->far_ptr = & ((M_Fog *) node)->isBound;
7083 7 : return GF_OK;
7084 : default:
7085 0 : return GF_BAD_PARAM;
7086 : }
7087 114 : }
7088 :
7089 :
7090 : static s32 Fog_get_field_index_by_name(char *name)
7091 : {
7092 36 : if (!strcmp("color", name)) return 0;
7093 12 : if (!strcmp("fogType", name)) return 1;
7094 20 : if (!strcmp("visibilityRange", name)) return 2;
7095 8 : if (!strcmp("set_bind", name)) return 3;
7096 0 : if (!strcmp("isBound", name)) return 4;
7097 0 : return -1;
7098 16 : }
7099 : static Bool Fog_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
7100 : {
7101 0 : switch (FieldIndex) {
7102 : case 0:
7103 0 : *AType = 4;
7104 0 : *QType = 4;
7105 0 : *b_min = FLT2FIX(0);
7106 0 : *b_max = FLT2FIX(1);
7107 0 : return 1;
7108 : case 2:
7109 0 : *AType = 7;
7110 0 : *QType = 11;
7111 0 : *b_min = FLT2FIX(0);
7112 0 : *b_max = FIX_MAX;
7113 0 : return 1;
7114 : default:
7115 0 : return 0;
7116 : }
7117 0 : }
7118 :
7119 :
7120 :
7121 : GF_Node *Fog_Create()
7122 : {
7123 : M_Fog *p;
7124 54 : GF_SAFEALLOC(p, M_Fog);
7125 18 : if(!p) return NULL;
7126 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Fog);
7127 :
7128 : /*default field values*/
7129 18 : p->color.red = FLT2FIX(1);
7130 18 : p->color.green = FLT2FIX(1);
7131 18 : p->color.blue = FLT2FIX(1);
7132 18 : p->fogType.buffer = (char*)gf_malloc(sizeof(char) * 7);
7133 18 : strcpy(p->fogType.buffer, "LINEAR");
7134 18 : p->visibilityRange = FLT2FIX(0);
7135 18 : return (GF_Node *)p;
7136 18 : }
7137 :
7138 :
7139 : /*
7140 : FontStyle Node deletion
7141 : */
7142 :
7143 : static void FontStyle_Del(GF_Node *node)
7144 : {
7145 15672 : M_FontStyle *p = (M_FontStyle *) node;
7146 7836 : gf_sg_mfstring_del(p->family);
7147 7836 : gf_sg_mfstring_del(p->justify);
7148 7836 : gf_sg_sfstring_del(p->language);
7149 7836 : gf_sg_sfstring_del(p->style);
7150 7836 : gf_node_free((GF_Node *) p);
7151 7836 : }
7152 :
7153 : static const u16 FontStyle_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
7154 : static const u16 FontStyle_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
7155 : static const u16 FontStyle_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
7156 :
7157 : static u32 FontStyle_get_field_count(GF_Node *node, u8 IndexMode)
7158 : {
7159 13138 : switch(IndexMode) {
7160 : case GF_SG_FIELD_CODING_IN:
7161 72 : return 9;
7162 : case GF_SG_FIELD_CODING_DEF:
7163 2523 : return 9;
7164 : case GF_SG_FIELD_CODING_OUT:
7165 0 : return 9;
7166 : case GF_SG_FIELD_CODING_DYN:
7167 0 : return 0;
7168 : default:
7169 3974 : return 9;
7170 : }
7171 6569 : }
7172 :
7173 : static GF_Err FontStyle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
7174 : {
7175 17760 : switch(IndexMode) {
7176 : case GF_SG_FIELD_CODING_IN:
7177 168 : *allField = FontStyle_In2All[inField];
7178 168 : return GF_OK;
7179 : case GF_SG_FIELD_CODING_DEF:
7180 8712 : *allField = FontStyle_Def2All[inField];
7181 8712 : return GF_OK;
7182 : case GF_SG_FIELD_CODING_OUT:
7183 0 : *allField = FontStyle_Out2All[inField];
7184 0 : return GF_OK;
7185 : default:
7186 0 : return GF_BAD_PARAM;
7187 : }
7188 8880 : }
7189 : static GF_Err FontStyle_get_field(GF_Node *node, GF_FieldInfo *info)
7190 : {
7191 185562 : switch (info->fieldIndex) {
7192 : case 0:
7193 9365 : info->name = "family";
7194 9365 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7195 9365 : info->fieldType = GF_SG_VRML_MFSTRING;
7196 9365 : info->far_ptr = & ((M_FontStyle *) node)->family;
7197 9365 : return GF_OK;
7198 : case 1:
7199 9653 : info->name = "horizontal";
7200 9653 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7201 9653 : info->fieldType = GF_SG_VRML_SFBOOL;
7202 9653 : info->far_ptr = & ((M_FontStyle *) node)->horizontal;
7203 9653 : return GF_OK;
7204 : case 2:
7205 13266 : info->name = "justify";
7206 13266 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7207 13266 : info->fieldType = GF_SG_VRML_MFSTRING;
7208 13266 : info->far_ptr = & ((M_FontStyle *) node)->justify;
7209 13266 : return GF_OK;
7210 : case 3:
7211 9068 : info->name = "language";
7212 9068 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7213 9068 : info->fieldType = GF_SG_VRML_SFSTRING;
7214 9068 : info->far_ptr = & ((M_FontStyle *) node)->language;
7215 9068 : return GF_OK;
7216 : case 4:
7217 9818 : info->name = "leftToRight";
7218 9818 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7219 9818 : info->fieldType = GF_SG_VRML_SFBOOL;
7220 9818 : info->far_ptr = & ((M_FontStyle *) node)->leftToRight;
7221 9818 : return GF_OK;
7222 : case 5:
7223 13316 : info->name = "size";
7224 13316 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7225 13316 : info->fieldType = GF_SG_VRML_SFFLOAT;
7226 13316 : info->far_ptr = & ((M_FontStyle *) node)->size;
7227 13316 : return GF_OK;
7228 : case 6:
7229 9083 : info->name = "spacing";
7230 9083 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7231 9083 : info->fieldType = GF_SG_VRML_SFFLOAT;
7232 9083 : info->far_ptr = & ((M_FontStyle *) node)->spacing;
7233 9083 : return GF_OK;
7234 : case 7:
7235 9394 : info->name = "style";
7236 9394 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7237 9394 : info->fieldType = GF_SG_VRML_SFSTRING;
7238 9394 : info->far_ptr = & ((M_FontStyle *) node)->style;
7239 9394 : return GF_OK;
7240 : case 8:
7241 9818 : info->name = "topToBottom";
7242 9818 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7243 9818 : info->fieldType = GF_SG_VRML_SFBOOL;
7244 9818 : info->far_ptr = & ((M_FontStyle *) node)->topToBottom;
7245 9818 : return GF_OK;
7246 : default:
7247 0 : return GF_BAD_PARAM;
7248 : }
7249 92781 : }
7250 :
7251 :
7252 : static s32 FontStyle_get_field_index_by_name(char *name)
7253 : {
7254 6179 : if (!strcmp("family", name)) return 0;
7255 3112 : if (!strcmp("horizontal", name)) return 1;
7256 3950 : if (!strcmp("justify", name)) return 2;
7257 1650 : if (!strcmp("language", name)) return 3;
7258 1850 : if (!strcmp("leftToRight", name)) return 4;
7259 2617 : if (!strcmp("size", name)) return 5;
7260 287 : if (!strcmp("spacing", name)) return 6;
7261 347 : if (!strcmp("style", name)) return 7;
7262 411 : if (!strcmp("topToBottom", name)) return 8;
7263 11 : return -1;
7264 3045 : }
7265 : static Bool FontStyle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
7266 : {
7267 0 : switch (FieldIndex) {
7268 : case 5:
7269 0 : *AType = 0;
7270 0 : *QType = 11;
7271 0 : *b_min = FLT2FIX(0);
7272 0 : *b_max = FIX_MAX;
7273 0 : return 1;
7274 : case 6:
7275 0 : *AType = 0;
7276 0 : *QType = 11;
7277 0 : *b_min = FLT2FIX(0);
7278 0 : *b_max = FIX_MAX;
7279 0 : return 1;
7280 : default:
7281 0 : return 0;
7282 : }
7283 0 : }
7284 :
7285 :
7286 :
7287 : GF_Node *FontStyle_Create()
7288 : {
7289 : M_FontStyle *p;
7290 23508 : GF_SAFEALLOC(p, M_FontStyle);
7291 7836 : if(!p) return NULL;
7292 7836 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FontStyle);
7293 :
7294 : /*default field values*/
7295 7836 : p->family.vals = (char**)gf_malloc(sizeof(SFString)*1);
7296 7836 : p->family.count = 1;
7297 7836 : p->family.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
7298 7836 : strcpy(p->family.vals[0], "SERIF");
7299 7836 : p->horizontal = 1;
7300 7836 : p->justify.vals = (char**)gf_malloc(sizeof(SFString)*1);
7301 7836 : p->justify.count = 1;
7302 7836 : p->justify.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
7303 7836 : strcpy(p->justify.vals[0], "BEGIN");
7304 7836 : p->leftToRight = 1;
7305 7836 : p->size = FLT2FIX(1.0);
7306 7836 : p->spacing = FLT2FIX(1.0);
7307 7836 : p->style.buffer = (char*)gf_malloc(sizeof(char) * 6);
7308 7836 : strcpy(p->style.buffer, "PLAIN");
7309 7836 : p->topToBottom = 1;
7310 7836 : return (GF_Node *)p;
7311 7836 : }
7312 :
7313 :
7314 : /*
7315 : Form Node deletion
7316 : */
7317 :
7318 : static void Form_Del(GF_Node *node)
7319 : {
7320 570 : M_Form *p = (M_Form *) node;
7321 285 : gf_sg_mfint32_del(p->groups);
7322 285 : gf_sg_mfstring_del(p->constraints);
7323 285 : gf_sg_mfint32_del(p->groupsIndex);
7324 285 : gf_sg_vrml_parent_destroy((GF_Node *) p);
7325 285 : gf_node_free((GF_Node *) p);
7326 285 : }
7327 :
7328 : static const u16 Form_Def2All[] = { 2, 3, 4, 5, 6};
7329 : static const u16 Form_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
7330 : static const u16 Form_Out2All[] = { 2, 3, 4, 5, 6};
7331 : static const u16 Form_Dyn2All[] = { 3};
7332 :
7333 : static u32 Form_get_field_count(GF_Node *node, u8 IndexMode)
7334 : {
7335 498 : switch(IndexMode) {
7336 : case GF_SG_FIELD_CODING_IN:
7337 0 : return 7;
7338 : case GF_SG_FIELD_CODING_DEF:
7339 135 : return 5;
7340 : case GF_SG_FIELD_CODING_OUT:
7341 0 : return 5;
7342 : case GF_SG_FIELD_CODING_DYN:
7343 0 : return 1;
7344 : default:
7345 114 : return 7;
7346 : }
7347 249 : }
7348 :
7349 : static GF_Err Form_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
7350 : {
7351 1050 : switch(IndexMode) {
7352 : case GF_SG_FIELD_CODING_IN:
7353 0 : *allField = Form_In2All[inField];
7354 0 : return GF_OK;
7355 : case GF_SG_FIELD_CODING_DEF:
7356 525 : *allField = Form_Def2All[inField];
7357 525 : return GF_OK;
7358 : case GF_SG_FIELD_CODING_OUT:
7359 0 : *allField = Form_Out2All[inField];
7360 0 : return GF_OK;
7361 : case GF_SG_FIELD_CODING_DYN:
7362 0 : *allField = Form_Dyn2All[inField];
7363 0 : return GF_OK;
7364 : default:
7365 0 : return GF_BAD_PARAM;
7366 : }
7367 525 : }
7368 : static GF_Err Form_get_field(GF_Node *node, GF_FieldInfo *info)
7369 : {
7370 5298 : switch (info->fieldIndex) {
7371 : case 0:
7372 114 : info->name = "addChildren";
7373 114 : info->eventType = GF_SG_EVENT_IN;
7374 114 : info->on_event_in = ((M_Form *)node)->on_addChildren;
7375 114 : info->fieldType = GF_SG_VRML_MFNODE;
7376 114 : info->NDTtype = NDT_SF2DNode;
7377 114 : info->far_ptr = & ((M_Form *)node)->addChildren;
7378 114 : return GF_OK;
7379 : case 1:
7380 114 : info->name = "removeChildren";
7381 114 : info->eventType = GF_SG_EVENT_IN;
7382 114 : info->on_event_in = ((M_Form *)node)->on_removeChildren;
7383 114 : info->fieldType = GF_SG_VRML_MFNODE;
7384 114 : info->NDTtype = NDT_SF2DNode;
7385 114 : info->far_ptr = & ((M_Form *)node)->removeChildren;
7386 114 : return GF_OK;
7387 : case 2:
7388 369 : info->name = "children";
7389 369 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7390 369 : info->fieldType = GF_SG_VRML_MFNODE;
7391 369 : info->NDTtype = NDT_SF2DNode;
7392 369 : info->far_ptr = & ((M_Form *)node)->children;
7393 369 : return GF_OK;
7394 : case 3:
7395 513 : info->name = "size";
7396 513 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7397 513 : info->fieldType = GF_SG_VRML_SFVEC2F;
7398 513 : info->far_ptr = & ((M_Form *) node)->size;
7399 513 : return GF_OK;
7400 : case 4:
7401 513 : info->name = "groups";
7402 513 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7403 513 : info->fieldType = GF_SG_VRML_MFINT32;
7404 513 : info->far_ptr = & ((M_Form *) node)->groups;
7405 513 : return GF_OK;
7406 : case 5:
7407 513 : info->name = "constraints";
7408 513 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7409 513 : info->fieldType = GF_SG_VRML_MFSTRING;
7410 513 : info->far_ptr = & ((M_Form *) node)->constraints;
7411 513 : return GF_OK;
7412 : case 6:
7413 513 : info->name = "groupsIndex";
7414 513 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7415 513 : info->fieldType = GF_SG_VRML_MFINT32;
7416 513 : info->far_ptr = & ((M_Form *) node)->groupsIndex;
7417 513 : return GF_OK;
7418 : default:
7419 0 : return GF_BAD_PARAM;
7420 : }
7421 2649 : }
7422 :
7423 :
7424 : static s32 Form_get_field_index_by_name(char *name)
7425 : {
7426 600 : if (!strcmp("addChildren", name)) return 0;
7427 300 : if (!strcmp("removeChildren", name)) return 1;
7428 360 : if (!strcmp("children", name)) return 2;
7429 300 : if (!strcmp("size", name)) return 3;
7430 240 : if (!strcmp("groups", name)) return 4;
7431 180 : if (!strcmp("constraints", name)) return 5;
7432 120 : if (!strcmp("groupsIndex", name)) return 6;
7433 0 : return -1;
7434 300 : }
7435 : static Bool Form_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
7436 : {
7437 0 : switch (FieldIndex) {
7438 : case 3:
7439 0 : *AType = 12;
7440 0 : *QType = 12;
7441 0 : *b_min = FLT2FIX(0);
7442 0 : *b_max = FIX_MAX;
7443 0 : return 1;
7444 : case 4:
7445 0 : *AType = 0;
7446 0 : *QType = 13;
7447 0 : *QT13_bits = 10;
7448 0 : *b_min = FLT2FIX(-1);
7449 0 : *b_max = FLT2FIX(1022);
7450 0 : return 1;
7451 : case 6:
7452 0 : *AType = 0;
7453 0 : *QType = 13;
7454 0 : *QT13_bits = 10;
7455 0 : *b_min = FLT2FIX(-1);
7456 0 : *b_max = FLT2FIX(1022);
7457 0 : return 1;
7458 : default:
7459 0 : return 0;
7460 : }
7461 0 : }
7462 :
7463 :
7464 :
7465 : GF_Node *Form_Create()
7466 : {
7467 : M_Form *p;
7468 855 : GF_SAFEALLOC(p, M_Form);
7469 285 : if(!p) return NULL;
7470 285 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Form);
7471 285 : gf_sg_vrml_parent_setup((GF_Node *) p);
7472 :
7473 : /*default field values*/
7474 285 : p->size.x = FLT2FIX(-1);
7475 285 : p->size.y = FLT2FIX(-1);
7476 285 : return (GF_Node *)p;
7477 285 : }
7478 :
7479 :
7480 : /*
7481 : Group Node deletion
7482 : */
7483 :
7484 : static void Group_Del(GF_Node *node)
7485 : {
7486 2868 : M_Group *p = (M_Group *) node;
7487 1434 : gf_sg_vrml_parent_destroy((GF_Node *) p);
7488 1434 : gf_node_free((GF_Node *) p);
7489 1434 : }
7490 :
7491 : static const u16 Group_Def2All[] = { 2};
7492 : static const u16 Group_In2All[] = { 0, 1, 2};
7493 : static const u16 Group_Out2All[] = { 2};
7494 :
7495 : static u32 Group_get_field_count(GF_Node *node, u8 IndexMode)
7496 : {
7497 2532 : switch(IndexMode) {
7498 : case GF_SG_FIELD_CODING_IN:
7499 0 : return 3;
7500 : case GF_SG_FIELD_CODING_DEF:
7501 702 : return 1;
7502 : case GF_SG_FIELD_CODING_OUT:
7503 0 : return 1;
7504 : case GF_SG_FIELD_CODING_DYN:
7505 0 : return 0;
7506 : default:
7507 564 : return 3;
7508 : }
7509 1266 : }
7510 :
7511 : static GF_Err Group_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
7512 : {
7513 1092 : switch(IndexMode) {
7514 : case GF_SG_FIELD_CODING_IN:
7515 0 : *allField = Group_In2All[inField];
7516 0 : return GF_OK;
7517 : case GF_SG_FIELD_CODING_DEF:
7518 546 : *allField = Group_Def2All[inField];
7519 546 : return GF_OK;
7520 : case GF_SG_FIELD_CODING_OUT:
7521 0 : *allField = Group_Out2All[inField];
7522 0 : return GF_OK;
7523 : default:
7524 0 : return GF_BAD_PARAM;
7525 : }
7526 546 : }
7527 : static GF_Err Group_get_field(GF_Node *node, GF_FieldInfo *info)
7528 : {
7529 6036 : switch (info->fieldIndex) {
7530 : case 0:
7531 564 : info->name = "addChildren";
7532 564 : info->eventType = GF_SG_EVENT_IN;
7533 564 : info->on_event_in = ((M_Group *)node)->on_addChildren;
7534 564 : info->fieldType = GF_SG_VRML_MFNODE;
7535 564 : info->NDTtype = NDT_SF3DNode;
7536 564 : info->far_ptr = & ((M_Group *)node)->addChildren;
7537 564 : return GF_OK;
7538 : case 1:
7539 564 : info->name = "removeChildren";
7540 564 : info->eventType = GF_SG_EVENT_IN;
7541 564 : info->on_event_in = ((M_Group *)node)->on_removeChildren;
7542 564 : info->fieldType = GF_SG_VRML_MFNODE;
7543 564 : info->NDTtype = NDT_SF3DNode;
7544 564 : info->far_ptr = & ((M_Group *)node)->removeChildren;
7545 564 : return GF_OK;
7546 : case 2:
7547 1890 : info->name = "children";
7548 1890 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7549 1890 : info->fieldType = GF_SG_VRML_MFNODE;
7550 1890 : info->NDTtype = NDT_SF3DNode;
7551 1890 : info->far_ptr = & ((M_Group *)node)->children;
7552 1890 : return GF_OK;
7553 : default:
7554 0 : return GF_BAD_PARAM;
7555 : }
7556 3018 : }
7557 :
7558 :
7559 : static s32 Group_get_field_index_by_name(char *name)
7560 : {
7561 624 : if (!strcmp("addChildren", name)) return 0;
7562 312 : if (!strcmp("removeChildren", name)) return 1;
7563 624 : if (!strcmp("children", name)) return 2;
7564 0 : return -1;
7565 312 : }
7566 : static Bool Group_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
7567 : {
7568 : switch (FieldIndex) {
7569 : default:
7570 0 : return 0;
7571 : }
7572 : }
7573 :
7574 :
7575 :
7576 : GF_Node *Group_Create()
7577 : {
7578 : M_Group *p;
7579 4302 : GF_SAFEALLOC(p, M_Group);
7580 1434 : if(!p) return NULL;
7581 1434 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Group);
7582 1434 : gf_sg_vrml_parent_setup((GF_Node *) p);
7583 :
7584 : /*default field values*/
7585 1434 : return (GF_Node *)p;
7586 1434 : }
7587 :
7588 :
7589 : /*
7590 : ImageTexture Node deletion
7591 : */
7592 :
7593 : static void ImageTexture_Del(GF_Node *node)
7594 : {
7595 2000 : M_ImageTexture *p = (M_ImageTexture *) node;
7596 1000 : gf_sg_mfurl_del(p->url);
7597 1000 : gf_node_free((GF_Node *) p);
7598 1000 : }
7599 :
7600 : static const u16 ImageTexture_Def2All[] = { 0, 1, 2};
7601 : static const u16 ImageTexture_In2All[] = { 0};
7602 : static const u16 ImageTexture_Out2All[] = { 0};
7603 :
7604 : static u32 ImageTexture_get_field_count(GF_Node *node, u8 IndexMode)
7605 : {
7606 1886 : switch(IndexMode) {
7607 : case GF_SG_FIELD_CODING_IN:
7608 54 : return 1;
7609 : case GF_SG_FIELD_CODING_DEF:
7610 381 : return 3;
7611 : case GF_SG_FIELD_CODING_OUT:
7612 0 : return 1;
7613 : case GF_SG_FIELD_CODING_DYN:
7614 0 : return 0;
7615 : default:
7616 508 : return 3;
7617 : }
7618 943 : }
7619 :
7620 : static GF_Err ImageTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
7621 : {
7622 1198 : switch(IndexMode) {
7623 : case GF_SG_FIELD_CODING_IN:
7624 42 : *allField = ImageTexture_In2All[inField];
7625 42 : return GF_OK;
7626 : case GF_SG_FIELD_CODING_DEF:
7627 557 : *allField = ImageTexture_Def2All[inField];
7628 557 : return GF_OK;
7629 : case GF_SG_FIELD_CODING_OUT:
7630 0 : *allField = ImageTexture_Out2All[inField];
7631 0 : return GF_OK;
7632 : default:
7633 0 : return GF_BAD_PARAM;
7634 : }
7635 599 : }
7636 : static GF_Err ImageTexture_get_field(GF_Node *node, GF_FieldInfo *info)
7637 : {
7638 9046 : switch (info->fieldIndex) {
7639 : case 0:
7640 1887 : info->name = "url";
7641 1887 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7642 1887 : info->fieldType = GF_SG_VRML_MFURL;
7643 1887 : info->far_ptr = & ((M_ImageTexture *) node)->url;
7644 1887 : return GF_OK;
7645 : case 1:
7646 1318 : info->name = "repeatS";
7647 1318 : info->eventType = GF_SG_EVENT_FIELD;
7648 1318 : info->fieldType = GF_SG_VRML_SFBOOL;
7649 1318 : info->far_ptr = & ((M_ImageTexture *) node)->repeatS;
7650 1318 : return GF_OK;
7651 : case 2:
7652 1318 : info->name = "repeatT";
7653 1318 : info->eventType = GF_SG_EVENT_FIELD;
7654 1318 : info->fieldType = GF_SG_VRML_SFBOOL;
7655 1318 : info->far_ptr = & ((M_ImageTexture *) node)->repeatT;
7656 1318 : return GF_OK;
7657 : default:
7658 0 : return GF_BAD_PARAM;
7659 : }
7660 4523 : }
7661 :
7662 :
7663 : static s32 ImageTexture_get_field_index_by_name(char *name)
7664 : {
7665 739 : if (!strcmp("url", name)) return 0;
7666 120 : if (!strcmp("repeatS", name)) return 1;
7667 80 : if (!strcmp("repeatT", name)) return 2;
7668 0 : return -1;
7669 273 : }
7670 : static Bool ImageTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
7671 : {
7672 : switch (FieldIndex) {
7673 : default:
7674 0 : return 0;
7675 : }
7676 : }
7677 :
7678 :
7679 :
7680 : GF_Node *ImageTexture_Create()
7681 : {
7682 : M_ImageTexture *p;
7683 3000 : GF_SAFEALLOC(p, M_ImageTexture);
7684 1000 : if(!p) return NULL;
7685 1000 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ImageTexture);
7686 :
7687 : /*default field values*/
7688 1000 : p->repeatS = 1;
7689 1000 : p->repeatT = 1;
7690 1000 : return (GF_Node *)p;
7691 1000 : }
7692 :
7693 :
7694 : /*
7695 : IndexedFaceSet Node deletion
7696 : */
7697 :
7698 : static void IndexedFaceSet_Del(GF_Node *node)
7699 : {
7700 114 : M_IndexedFaceSet *p = (M_IndexedFaceSet *) node;
7701 57 : gf_sg_mfint32_del(p->set_colorIndex);
7702 57 : gf_sg_mfint32_del(p->set_coordIndex);
7703 57 : gf_sg_mfint32_del(p->set_normalIndex);
7704 57 : gf_sg_mfint32_del(p->set_texCoordIndex);
7705 57 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
7706 57 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
7707 57 : gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
7708 57 : gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
7709 57 : gf_sg_mfint32_del(p->colorIndex);
7710 57 : gf_sg_mfint32_del(p->coordIndex);
7711 57 : gf_sg_mfint32_del(p->normalIndex);
7712 57 : gf_sg_mfint32_del(p->texCoordIndex);
7713 57 : gf_node_free((GF_Node *) p);
7714 57 : }
7715 :
7716 : static const u16 IndexedFaceSet_Def2All[] = { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
7717 : static const u16 IndexedFaceSet_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
7718 : static const u16 IndexedFaceSet_Out2All[] = { 4, 5, 6, 7};
7719 :
7720 : static u32 IndexedFaceSet_get_field_count(GF_Node *node, u8 IndexMode)
7721 : {
7722 102 : switch(IndexMode) {
7723 : case GF_SG_FIELD_CODING_IN:
7724 0 : return 8;
7725 : case GF_SG_FIELD_CODING_DEF:
7726 27 : return 14;
7727 : case GF_SG_FIELD_CODING_OUT:
7728 0 : return 4;
7729 : case GF_SG_FIELD_CODING_DYN:
7730 0 : return 0;
7731 : default:
7732 24 : return 18;
7733 : }
7734 51 : }
7735 :
7736 : static GF_Err IndexedFaceSet_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
7737 : {
7738 288 : switch(IndexMode) {
7739 : case GF_SG_FIELD_CODING_IN:
7740 0 : *allField = IndexedFaceSet_In2All[inField];
7741 0 : return GF_OK;
7742 : case GF_SG_FIELD_CODING_DEF:
7743 144 : *allField = IndexedFaceSet_Def2All[inField];
7744 144 : return GF_OK;
7745 : case GF_SG_FIELD_CODING_OUT:
7746 0 : *allField = IndexedFaceSet_Out2All[inField];
7747 0 : return GF_OK;
7748 : default:
7749 0 : return GF_BAD_PARAM;
7750 : }
7751 144 : }
7752 : static GF_Err IndexedFaceSet_get_field(GF_Node *node, GF_FieldInfo *info)
7753 : {
7754 2000 : switch (info->fieldIndex) {
7755 : case 0:
7756 24 : info->name = "set_colorIndex";
7757 24 : info->eventType = GF_SG_EVENT_IN;
7758 24 : info->on_event_in = ((M_IndexedFaceSet *)node)->on_set_colorIndex;
7759 24 : info->fieldType = GF_SG_VRML_MFINT32;
7760 24 : info->far_ptr = & ((M_IndexedFaceSet *) node)->set_colorIndex;
7761 24 : return GF_OK;
7762 : case 1:
7763 24 : info->name = "set_coordIndex";
7764 24 : info->eventType = GF_SG_EVENT_IN;
7765 24 : info->on_event_in = ((M_IndexedFaceSet *)node)->on_set_coordIndex;
7766 24 : info->fieldType = GF_SG_VRML_MFINT32;
7767 24 : info->far_ptr = & ((M_IndexedFaceSet *) node)->set_coordIndex;
7768 24 : return GF_OK;
7769 : case 2:
7770 24 : info->name = "set_normalIndex";
7771 24 : info->eventType = GF_SG_EVENT_IN;
7772 24 : info->on_event_in = ((M_IndexedFaceSet *)node)->on_set_normalIndex;
7773 24 : info->fieldType = GF_SG_VRML_MFINT32;
7774 24 : info->far_ptr = & ((M_IndexedFaceSet *) node)->set_normalIndex;
7775 24 : return GF_OK;
7776 : case 3:
7777 24 : info->name = "set_texCoordIndex";
7778 24 : info->eventType = GF_SG_EVENT_IN;
7779 24 : info->on_event_in = ((M_IndexedFaceSet *)node)->on_set_texCoordIndex;
7780 24 : info->fieldType = GF_SG_VRML_MFINT32;
7781 24 : info->far_ptr = & ((M_IndexedFaceSet *) node)->set_texCoordIndex;
7782 24 : return GF_OK;
7783 : case 4:
7784 60 : info->name = "color";
7785 60 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7786 60 : info->fieldType = GF_SG_VRML_SFNODE;
7787 60 : info->NDTtype = NDT_SFColorNode;
7788 60 : info->far_ptr = & ((M_IndexedFaceSet *)node)->color;
7789 60 : return GF_OK;
7790 : case 5:
7791 75 : info->name = "coord";
7792 75 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7793 75 : info->fieldType = GF_SG_VRML_SFNODE;
7794 75 : info->NDTtype = NDT_SFCoordinateNode;
7795 75 : info->far_ptr = & ((M_IndexedFaceSet *)node)->coord;
7796 75 : return GF_OK;
7797 : case 6:
7798 30 : info->name = "normal";
7799 30 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7800 30 : info->fieldType = GF_SG_VRML_SFNODE;
7801 30 : info->NDTtype = NDT_SFNormalNode;
7802 30 : info->far_ptr = & ((M_IndexedFaceSet *)node)->normal;
7803 30 : return GF_OK;
7804 : case 7:
7805 30 : info->name = "texCoord";
7806 30 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7807 30 : info->fieldType = GF_SG_VRML_SFNODE;
7808 30 : info->NDTtype = NDT_SFTextureCoordinateNode;
7809 30 : info->far_ptr = & ((M_IndexedFaceSet *)node)->texCoord;
7810 30 : return GF_OK;
7811 : case 8:
7812 62 : info->name = "ccw";
7813 62 : info->eventType = GF_SG_EVENT_FIELD;
7814 62 : info->fieldType = GF_SG_VRML_SFBOOL;
7815 62 : info->far_ptr = & ((M_IndexedFaceSet *) node)->ccw;
7816 62 : return GF_OK;
7817 : case 9:
7818 75 : info->name = "colorIndex";
7819 75 : info->eventType = GF_SG_EVENT_FIELD;
7820 75 : info->fieldType = GF_SG_VRML_MFINT32;
7821 75 : info->far_ptr = & ((M_IndexedFaceSet *) node)->colorIndex;
7822 75 : return GF_OK;
7823 : case 10:
7824 77 : info->name = "colorPerVertex";
7825 77 : info->eventType = GF_SG_EVENT_FIELD;
7826 77 : info->fieldType = GF_SG_VRML_SFBOOL;
7827 77 : info->far_ptr = & ((M_IndexedFaceSet *) node)->colorPerVertex;
7828 77 : return GF_OK;
7829 : case 11:
7830 60 : info->name = "convex";
7831 60 : info->eventType = GF_SG_EVENT_FIELD;
7832 60 : info->fieldType = GF_SG_VRML_SFBOOL;
7833 60 : info->far_ptr = & ((M_IndexedFaceSet *) node)->convex;
7834 60 : return GF_OK;
7835 : case 12:
7836 105 : info->name = "coordIndex";
7837 105 : info->eventType = GF_SG_EVENT_FIELD;
7838 105 : info->fieldType = GF_SG_VRML_MFINT32;
7839 105 : info->far_ptr = & ((M_IndexedFaceSet *) node)->coordIndex;
7840 105 : return GF_OK;
7841 : case 13:
7842 75 : info->name = "creaseAngle";
7843 75 : info->eventType = GF_SG_EVENT_FIELD;
7844 75 : info->fieldType = GF_SG_VRML_SFFLOAT;
7845 75 : info->far_ptr = & ((M_IndexedFaceSet *) node)->creaseAngle;
7846 75 : return GF_OK;
7847 : case 14:
7848 60 : info->name = "normalIndex";
7849 60 : info->eventType = GF_SG_EVENT_FIELD;
7850 60 : info->fieldType = GF_SG_VRML_MFINT32;
7851 60 : info->far_ptr = & ((M_IndexedFaceSet *) node)->normalIndex;
7852 60 : return GF_OK;
7853 : case 15:
7854 60 : info->name = "normalPerVertex";
7855 60 : info->eventType = GF_SG_EVENT_FIELD;
7856 60 : info->fieldType = GF_SG_VRML_SFBOOL;
7857 60 : info->far_ptr = & ((M_IndexedFaceSet *) node)->normalPerVertex;
7858 60 : return GF_OK;
7859 : case 16:
7860 75 : info->name = "solid";
7861 75 : info->eventType = GF_SG_EVENT_FIELD;
7862 75 : info->fieldType = GF_SG_VRML_SFBOOL;
7863 75 : info->far_ptr = & ((M_IndexedFaceSet *) node)->solid;
7864 75 : return GF_OK;
7865 : case 17:
7866 60 : info->name = "texCoordIndex";
7867 60 : info->eventType = GF_SG_EVENT_FIELD;
7868 60 : info->fieldType = GF_SG_VRML_MFINT32;
7869 60 : info->far_ptr = & ((M_IndexedFaceSet *) node)->texCoordIndex;
7870 60 : return GF_OK;
7871 : default:
7872 0 : return GF_BAD_PARAM;
7873 : }
7874 1000 : }
7875 :
7876 :
7877 : static s32 IndexedFaceSet_get_field_index_by_name(char *name)
7878 : {
7879 104 : if (!strcmp("set_colorIndex", name)) return 0;
7880 52 : if (!strcmp("set_coordIndex", name)) return 1;
7881 52 : if (!strcmp("set_normalIndex", name)) return 2;
7882 52 : if (!strcmp("set_texCoordIndex", name)) return 3;
7883 60 : if (!strcmp("color", name)) return 4;
7884 56 : if (!strcmp("coord", name)) return 5;
7885 32 : if (!strcmp("normal", name)) return 6;
7886 32 : if (!strcmp("texCoord", name)) return 7;
7887 34 : if (!strcmp("ccw", name)) return 8;
7888 34 : if (!strcmp("colorIndex", name)) return 9;
7889 32 : if (!strcmp("colorPerVertex", name)) return 10;
7890 20 : if (!strcmp("convex", name)) return 11;
7891 32 : if (!strcmp("coordIndex", name)) return 12;
7892 12 : if (!strcmp("creaseAngle", name)) return 13;
7893 4 : if (!strcmp("normalIndex", name)) return 14;
7894 4 : if (!strcmp("normalPerVertex", name)) return 15;
7895 8 : if (!strcmp("solid", name)) return 16;
7896 0 : if (!strcmp("texCoordIndex", name)) return 17;
7897 0 : return -1;
7898 52 : }
7899 : static Bool IndexedFaceSet_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
7900 : {
7901 0 : switch (FieldIndex) {
7902 : case 9:
7903 0 : *AType = 0;
7904 0 : *QType = 14;
7905 0 : *b_min = FLT2FIX(-1);
7906 0 : *b_max = FIX_MAX;
7907 0 : return 1;
7908 : case 12:
7909 0 : *AType = 0;
7910 0 : *QType = 14;
7911 0 : *b_min = FLT2FIX(-1);
7912 0 : *b_max = FIX_MAX;
7913 0 : return 1;
7914 : case 13:
7915 0 : *AType = 0;
7916 0 : *QType = 6;
7917 0 : *b_min = FLT2FIX(0);
7918 0 : *b_max = FLT2FIX(6.2831853);
7919 0 : return 1;
7920 : case 14:
7921 0 : *AType = 0;
7922 0 : *QType = 14;
7923 0 : *b_min = FLT2FIX(-1);
7924 0 : *b_max = FIX_MAX;
7925 0 : return 1;
7926 : case 17:
7927 0 : *AType = 0;
7928 0 : *QType = 14;
7929 0 : *b_min = FLT2FIX(-1);
7930 0 : *b_max = FIX_MAX;
7931 0 : return 1;
7932 : default:
7933 0 : return 0;
7934 : }
7935 0 : }
7936 :
7937 :
7938 :
7939 : GF_Node *IndexedFaceSet_Create()
7940 : {
7941 : M_IndexedFaceSet *p;
7942 171 : GF_SAFEALLOC(p, M_IndexedFaceSet);
7943 57 : if(!p) return NULL;
7944 57 : gf_node_setup((GF_Node *)p, TAG_MPEG4_IndexedFaceSet);
7945 :
7946 : /*default field values*/
7947 57 : p->ccw = 1;
7948 57 : p->colorPerVertex = 1;
7949 57 : p->convex = 1;
7950 57 : p->creaseAngle = FLT2FIX(0.0);
7951 57 : p->normalPerVertex = 1;
7952 57 : p->solid = 1;
7953 57 : return (GF_Node *)p;
7954 57 : }
7955 :
7956 :
7957 : /*
7958 : IndexedFaceSet2D Node deletion
7959 : */
7960 :
7961 : static void IndexedFaceSet2D_Del(GF_Node *node)
7962 : {
7963 3058 : M_IndexedFaceSet2D *p = (M_IndexedFaceSet2D *) node;
7964 1529 : gf_sg_mfint32_del(p->set_colorIndex);
7965 1529 : gf_sg_mfint32_del(p->set_coordIndex);
7966 1529 : gf_sg_mfint32_del(p->set_texCoordIndex);
7967 1529 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
7968 1529 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
7969 1529 : gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
7970 1529 : gf_sg_mfint32_del(p->colorIndex);
7971 1529 : gf_sg_mfint32_del(p->coordIndex);
7972 1529 : gf_sg_mfint32_del(p->texCoordIndex);
7973 1529 : gf_node_free((GF_Node *) p);
7974 1529 : }
7975 :
7976 : static const u16 IndexedFaceSet2D_Def2All[] = { 3, 4, 5, 6, 7, 8, 9, 10};
7977 : static const u16 IndexedFaceSet2D_In2All[] = { 0, 1, 2, 3, 4, 5};
7978 : static const u16 IndexedFaceSet2D_Out2All[] = { 3, 4, 5};
7979 :
7980 : static u32 IndexedFaceSet2D_get_field_count(GF_Node *node, u8 IndexMode)
7981 : {
7982 2782 : switch(IndexMode) {
7983 : case GF_SG_FIELD_CODING_IN:
7984 0 : return 6;
7985 : case GF_SG_FIELD_CODING_DEF:
7986 708 : return 8;
7987 : case GF_SG_FIELD_CODING_OUT:
7988 0 : return 3;
7989 : case GF_SG_FIELD_CODING_DYN:
7990 0 : return 0;
7991 : default:
7992 683 : return 11;
7993 : }
7994 1391 : }
7995 :
7996 : static GF_Err IndexedFaceSet2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
7997 : {
7998 3710 : switch(IndexMode) {
7999 : case GF_SG_FIELD_CODING_IN:
8000 0 : *allField = IndexedFaceSet2D_In2All[inField];
8001 0 : return GF_OK;
8002 : case GF_SG_FIELD_CODING_DEF:
8003 1855 : *allField = IndexedFaceSet2D_Def2All[inField];
8004 1855 : return GF_OK;
8005 : case GF_SG_FIELD_CODING_OUT:
8006 0 : *allField = IndexedFaceSet2D_Out2All[inField];
8007 0 : return GF_OK;
8008 : default:
8009 0 : return GF_BAD_PARAM;
8010 : }
8011 1855 : }
8012 : static GF_Err IndexedFaceSet2D_get_field(GF_Node *node, GF_FieldInfo *info)
8013 : {
8014 28960 : switch (info->fieldIndex) {
8015 : case 0:
8016 669 : info->name = "set_colorIndex";
8017 669 : info->eventType = GF_SG_EVENT_IN;
8018 669 : info->on_event_in = ((M_IndexedFaceSet2D *)node)->on_set_colorIndex;
8019 669 : info->fieldType = GF_SG_VRML_MFINT32;
8020 669 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->set_colorIndex;
8021 669 : return GF_OK;
8022 : case 1:
8023 669 : info->name = "set_coordIndex";
8024 669 : info->eventType = GF_SG_EVENT_IN;
8025 669 : info->on_event_in = ((M_IndexedFaceSet2D *)node)->on_set_coordIndex;
8026 669 : info->fieldType = GF_SG_VRML_MFINT32;
8027 669 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->set_coordIndex;
8028 669 : return GF_OK;
8029 : case 2:
8030 669 : info->name = "set_texCoordIndex";
8031 669 : info->eventType = GF_SG_EVENT_IN;
8032 669 : info->on_event_in = ((M_IndexedFaceSet2D *)node)->on_set_texCoordIndex;
8033 669 : info->fieldType = GF_SG_VRML_MFINT32;
8034 669 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->set_texCoordIndex;
8035 669 : return GF_OK;
8036 : case 3:
8037 867 : info->name = "color";
8038 867 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8039 867 : info->fieldType = GF_SG_VRML_SFNODE;
8040 867 : info->NDTtype = NDT_SFColorNode;
8041 867 : info->far_ptr = & ((M_IndexedFaceSet2D *)node)->color;
8042 867 : return GF_OK;
8043 : case 4:
8044 1994 : info->name = "coord";
8045 1994 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8046 1994 : info->fieldType = GF_SG_VRML_SFNODE;
8047 1994 : info->NDTtype = NDT_SFCoordinate2DNode;
8048 1994 : info->far_ptr = & ((M_IndexedFaceSet2D *)node)->coord;
8049 1994 : return GF_OK;
8050 : case 5:
8051 822 : info->name = "texCoord";
8052 822 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8053 822 : info->fieldType = GF_SG_VRML_SFNODE;
8054 822 : info->NDTtype = NDT_SFTextureCoordinateNode;
8055 822 : info->far_ptr = & ((M_IndexedFaceSet2D *)node)->texCoord;
8056 822 : return GF_OK;
8057 : case 6:
8058 1689 : info->name = "colorIndex";
8059 1689 : info->eventType = GF_SG_EVENT_FIELD;
8060 1689 : info->fieldType = GF_SG_VRML_MFINT32;
8061 1689 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->colorIndex;
8062 1689 : return GF_OK;
8063 : case 7:
8064 1914 : info->name = "colorPerVertex";
8065 1914 : info->eventType = GF_SG_EVENT_FIELD;
8066 1914 : info->fieldType = GF_SG_VRML_SFBOOL;
8067 1914 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->colorPerVertex;
8068 1914 : return GF_OK;
8069 : case 8:
8070 1644 : info->name = "convex";
8071 1644 : info->eventType = GF_SG_EVENT_FIELD;
8072 1644 : info->fieldType = GF_SG_VRML_SFBOOL;
8073 1644 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->convex;
8074 1644 : return GF_OK;
8075 : case 9:
8076 1899 : info->name = "coordIndex";
8077 1899 : info->eventType = GF_SG_EVENT_FIELD;
8078 1899 : info->fieldType = GF_SG_VRML_MFINT32;
8079 1899 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->coordIndex;
8080 1899 : return GF_OK;
8081 : case 10:
8082 1644 : info->name = "texCoordIndex";
8083 1644 : info->eventType = GF_SG_EVENT_FIELD;
8084 1644 : info->fieldType = GF_SG_VRML_MFINT32;
8085 1644 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->texCoordIndex;
8086 1644 : return GF_OK;
8087 : default:
8088 0 : return GF_BAD_PARAM;
8089 : }
8090 14480 : }
8091 :
8092 :
8093 : static s32 IndexedFaceSet2D_get_field_index_by_name(char *name)
8094 : {
8095 954 : if (!strcmp("set_colorIndex", name)) return 0;
8096 477 : if (!strcmp("set_coordIndex", name)) return 1;
8097 477 : if (!strcmp("set_texCoordIndex", name)) return 2;
8098 489 : if (!strcmp("color", name)) return 3;
8099 778 : if (!strcmp("coord", name)) return 4;
8100 152 : if (!strcmp("texCoord", name)) return 5;
8101 164 : if (!strcmp("colorIndex", name)) return 6;
8102 212 : if (!strcmp("colorPerVertex", name)) return 7;
8103 68 : if (!strcmp("convex", name)) return 8;
8104 136 : if (!strcmp("coordIndex", name)) return 9;
8105 0 : if (!strcmp("texCoordIndex", name)) return 10;
8106 0 : return -1;
8107 477 : }
8108 : static Bool IndexedFaceSet2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
8109 : {
8110 0 : switch (FieldIndex) {
8111 : case 6:
8112 0 : *AType = 0;
8113 0 : *QType = 14;
8114 0 : *b_min = FLT2FIX(-1);
8115 0 : *b_max = FIX_MAX;
8116 0 : return 1;
8117 : case 9:
8118 0 : *AType = 0;
8119 0 : *QType = 14;
8120 0 : *b_min = FLT2FIX(-1);
8121 0 : *b_max = FIX_MAX;
8122 0 : return 1;
8123 : case 10:
8124 0 : *AType = 0;
8125 0 : *QType = 14;
8126 0 : *b_min = FLT2FIX(-1);
8127 0 : *b_max = FIX_MAX;
8128 0 : return 1;
8129 : default:
8130 0 : return 0;
8131 : }
8132 0 : }
8133 :
8134 :
8135 :
8136 : GF_Node *IndexedFaceSet2D_Create()
8137 : {
8138 : M_IndexedFaceSet2D *p;
8139 4587 : GF_SAFEALLOC(p, M_IndexedFaceSet2D);
8140 1529 : if(!p) return NULL;
8141 1529 : gf_node_setup((GF_Node *)p, TAG_MPEG4_IndexedFaceSet2D);
8142 :
8143 : /*default field values*/
8144 1529 : p->colorPerVertex = 1;
8145 1529 : p->convex = 1;
8146 1529 : return (GF_Node *)p;
8147 1529 : }
8148 :
8149 :
8150 : /*
8151 : IndexedLineSet Node deletion
8152 : */
8153 :
8154 : static void IndexedLineSet_Del(GF_Node *node)
8155 : {
8156 72 : M_IndexedLineSet *p = (M_IndexedLineSet *) node;
8157 36 : gf_sg_mfint32_del(p->set_colorIndex);
8158 36 : gf_sg_mfint32_del(p->set_coordIndex);
8159 36 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
8160 36 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
8161 36 : gf_sg_mfint32_del(p->colorIndex);
8162 36 : gf_sg_mfint32_del(p->coordIndex);
8163 36 : gf_node_free((GF_Node *) p);
8164 36 : }
8165 :
8166 : static const u16 IndexedLineSet_Def2All[] = { 2, 3, 4, 5, 6};
8167 : static const u16 IndexedLineSet_In2All[] = { 0, 1, 2, 3};
8168 : static const u16 IndexedLineSet_Out2All[] = { 2, 3};
8169 :
8170 : static u32 IndexedLineSet_get_field_count(GF_Node *node, u8 IndexMode)
8171 : {
8172 64 : switch(IndexMode) {
8173 : case GF_SG_FIELD_CODING_IN:
8174 0 : return 4;
8175 : case GF_SG_FIELD_CODING_DEF:
8176 18 : return 5;
8177 : case GF_SG_FIELD_CODING_OUT:
8178 0 : return 2;
8179 : case GF_SG_FIELD_CODING_DYN:
8180 0 : return 0;
8181 : default:
8182 14 : return 7;
8183 : }
8184 32 : }
8185 :
8186 : static GF_Err IndexedLineSet_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
8187 : {
8188 130 : switch(IndexMode) {
8189 : case GF_SG_FIELD_CODING_IN:
8190 0 : *allField = IndexedLineSet_In2All[inField];
8191 0 : return GF_OK;
8192 : case GF_SG_FIELD_CODING_DEF:
8193 65 : *allField = IndexedLineSet_Def2All[inField];
8194 65 : return GF_OK;
8195 : case GF_SG_FIELD_CODING_OUT:
8196 0 : *allField = IndexedLineSet_Out2All[inField];
8197 0 : return GF_OK;
8198 : default:
8199 0 : return GF_BAD_PARAM;
8200 : }
8201 65 : }
8202 : static GF_Err IndexedLineSet_get_field(GF_Node *node, GF_FieldInfo *info)
8203 : {
8204 618 : switch (info->fieldIndex) {
8205 : case 0:
8206 14 : info->name = "set_colorIndex";
8207 14 : info->eventType = GF_SG_EVENT_IN;
8208 14 : info->on_event_in = ((M_IndexedLineSet *)node)->on_set_colorIndex;
8209 14 : info->fieldType = GF_SG_VRML_MFINT32;
8210 14 : info->far_ptr = & ((M_IndexedLineSet *) node)->set_colorIndex;
8211 14 : return GF_OK;
8212 : case 1:
8213 14 : info->name = "set_coordIndex";
8214 14 : info->eventType = GF_SG_EVENT_IN;
8215 14 : info->on_event_in = ((M_IndexedLineSet *)node)->on_set_coordIndex;
8216 14 : info->fieldType = GF_SG_VRML_MFINT32;
8217 14 : info->far_ptr = & ((M_IndexedLineSet *) node)->set_coordIndex;
8218 14 : return GF_OK;
8219 : case 2:
8220 48 : info->name = "color";
8221 48 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8222 48 : info->fieldType = GF_SG_VRML_SFNODE;
8223 48 : info->NDTtype = NDT_SFColorNode;
8224 48 : info->far_ptr = & ((M_IndexedLineSet *)node)->color;
8225 48 : return GF_OK;
8226 : case 3:
8227 48 : info->name = "coord";
8228 48 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8229 48 : info->fieldType = GF_SG_VRML_SFNODE;
8230 48 : info->NDTtype = NDT_SFCoordinateNode;
8231 48 : info->far_ptr = & ((M_IndexedLineSet *)node)->coord;
8232 48 : return GF_OK;
8233 : case 4:
8234 66 : info->name = "colorIndex";
8235 66 : info->eventType = GF_SG_EVENT_FIELD;
8236 66 : info->fieldType = GF_SG_VRML_MFINT32;
8237 66 : info->far_ptr = & ((M_IndexedLineSet *) node)->colorIndex;
8238 66 : return GF_OK;
8239 : case 5:
8240 53 : info->name = "colorPerVertex";
8241 53 : info->eventType = GF_SG_EVENT_FIELD;
8242 53 : info->fieldType = GF_SG_VRML_SFBOOL;
8243 53 : info->far_ptr = & ((M_IndexedLineSet *) node)->colorPerVertex;
8244 53 : return GF_OK;
8245 : case 6:
8246 66 : info->name = "coordIndex";
8247 66 : info->eventType = GF_SG_EVENT_FIELD;
8248 66 : info->fieldType = GF_SG_VRML_MFINT32;
8249 66 : info->far_ptr = & ((M_IndexedLineSet *) node)->coordIndex;
8250 66 : return GF_OK;
8251 : default:
8252 0 : return GF_BAD_PARAM;
8253 : }
8254 309 : }
8255 :
8256 :
8257 : static s32 IndexedLineSet_get_field_index_by_name(char *name)
8258 : {
8259 76 : if (!strcmp("set_colorIndex", name)) return 0;
8260 38 : if (!strcmp("set_coordIndex", name)) return 1;
8261 46 : if (!strcmp("color", name)) return 2;
8262 38 : if (!strcmp("coord", name)) return 3;
8263 30 : if (!strcmp("colorIndex", name)) return 4;
8264 20 : if (!strcmp("colorPerVertex", name)) return 5;
8265 16 : if (!strcmp("coordIndex", name)) return 6;
8266 0 : return -1;
8267 38 : }
8268 : static Bool IndexedLineSet_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
8269 : {
8270 0 : switch (FieldIndex) {
8271 : case 4:
8272 0 : *AType = 0;
8273 0 : *QType = 14;
8274 0 : *b_min = FLT2FIX(-1);
8275 0 : *b_max = FIX_MAX;
8276 0 : return 1;
8277 : case 6:
8278 0 : *AType = 0;
8279 0 : *QType = 14;
8280 0 : *b_min = FLT2FIX(-1);
8281 0 : *b_max = FIX_MAX;
8282 0 : return 1;
8283 : default:
8284 0 : return 0;
8285 : }
8286 0 : }
8287 :
8288 :
8289 :
8290 : GF_Node *IndexedLineSet_Create()
8291 : {
8292 : M_IndexedLineSet *p;
8293 108 : GF_SAFEALLOC(p, M_IndexedLineSet);
8294 36 : if(!p) return NULL;
8295 36 : gf_node_setup((GF_Node *)p, TAG_MPEG4_IndexedLineSet);
8296 :
8297 : /*default field values*/
8298 36 : p->colorPerVertex = 1;
8299 36 : return (GF_Node *)p;
8300 36 : }
8301 :
8302 :
8303 : /*
8304 : IndexedLineSet2D Node deletion
8305 : */
8306 :
8307 : static void IndexedLineSet2D_Del(GF_Node *node)
8308 : {
8309 1670 : M_IndexedLineSet2D *p = (M_IndexedLineSet2D *) node;
8310 835 : gf_sg_mfint32_del(p->set_colorIndex);
8311 835 : gf_sg_mfint32_del(p->set_coordIndex);
8312 835 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
8313 835 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
8314 835 : gf_sg_mfint32_del(p->colorIndex);
8315 835 : gf_sg_mfint32_del(p->coordIndex);
8316 835 : gf_node_free((GF_Node *) p);
8317 835 : }
8318 :
8319 : static const u16 IndexedLineSet2D_Def2All[] = { 2, 3, 4, 5, 6};
8320 : static const u16 IndexedLineSet2D_In2All[] = { 0, 1, 2, 3};
8321 : static const u16 IndexedLineSet2D_Out2All[] = { 2, 3};
8322 :
8323 : static u32 IndexedLineSet2D_get_field_count(GF_Node *node, u8 IndexMode)
8324 : {
8325 1518 : switch(IndexMode) {
8326 : case GF_SG_FIELD_CODING_IN:
8327 0 : return 4;
8328 : case GF_SG_FIELD_CODING_DEF:
8329 254 : return 5;
8330 : case GF_SG_FIELD_CODING_OUT:
8331 0 : return 2;
8332 : case GF_SG_FIELD_CODING_DYN:
8333 0 : return 0;
8334 : default:
8335 505 : return 7;
8336 : }
8337 759 : }
8338 :
8339 : static GF_Err IndexedLineSet2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
8340 : {
8341 1040 : switch(IndexMode) {
8342 : case GF_SG_FIELD_CODING_IN:
8343 0 : *allField = IndexedLineSet2D_In2All[inField];
8344 0 : return GF_OK;
8345 : case GF_SG_FIELD_CODING_DEF:
8346 520 : *allField = IndexedLineSet2D_Def2All[inField];
8347 520 : return GF_OK;
8348 : case GF_SG_FIELD_CODING_OUT:
8349 0 : *allField = IndexedLineSet2D_Out2All[inField];
8350 0 : return GF_OK;
8351 : default:
8352 0 : return GF_BAD_PARAM;
8353 : }
8354 520 : }
8355 : static GF_Err IndexedLineSet2D_get_field(GF_Node *node, GF_FieldInfo *info)
8356 : {
8357 12426 : switch (info->fieldIndex) {
8358 : case 0:
8359 505 : info->name = "set_colorIndex";
8360 505 : info->eventType = GF_SG_EVENT_IN;
8361 505 : info->on_event_in = ((M_IndexedLineSet2D *)node)->on_set_colorIndex;
8362 505 : info->fieldType = GF_SG_VRML_MFINT32;
8363 505 : info->far_ptr = & ((M_IndexedLineSet2D *) node)->set_colorIndex;
8364 505 : return GF_OK;
8365 : case 1:
8366 505 : info->name = "set_coordIndex";
8367 505 : info->eventType = GF_SG_EVENT_IN;
8368 505 : info->on_event_in = ((M_IndexedLineSet2D *)node)->on_set_coordIndex;
8369 505 : info->fieldType = GF_SG_VRML_MFINT32;
8370 505 : info->far_ptr = & ((M_IndexedLineSet2D *) node)->set_coordIndex;
8371 505 : return GF_OK;
8372 : case 2:
8373 592 : info->name = "color";
8374 592 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8375 592 : info->fieldType = GF_SG_VRML_SFNODE;
8376 592 : info->NDTtype = NDT_SFColorNode;
8377 592 : info->far_ptr = & ((M_IndexedLineSet2D *)node)->color;
8378 592 : return GF_OK;
8379 : case 3:
8380 984 : info->name = "coord";
8381 984 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8382 984 : info->fieldType = GF_SG_VRML_SFNODE;
8383 984 : info->NDTtype = NDT_SFCoordinate2DNode;
8384 984 : info->far_ptr = & ((M_IndexedLineSet2D *)node)->coord;
8385 984 : return GF_OK;
8386 : case 4:
8387 1154 : info->name = "colorIndex";
8388 1154 : info->eventType = GF_SG_EVENT_FIELD;
8389 1154 : info->fieldType = GF_SG_VRML_MFINT32;
8390 1154 : info->far_ptr = & ((M_IndexedLineSet2D *) node)->colorIndex;
8391 1154 : return GF_OK;
8392 : case 5:
8393 1154 : info->name = "colorPerVertex";
8394 1154 : info->eventType = GF_SG_EVENT_FIELD;
8395 1154 : info->fieldType = GF_SG_VRML_SFBOOL;
8396 1154 : info->far_ptr = & ((M_IndexedLineSet2D *) node)->colorPerVertex;
8397 1154 : return GF_OK;
8398 : case 6:
8399 1319 : info->name = "coordIndex";
8400 1319 : info->eventType = GF_SG_EVENT_FIELD;
8401 1319 : info->fieldType = GF_SG_VRML_MFINT32;
8402 1319 : info->far_ptr = & ((M_IndexedLineSet2D *) node)->coordIndex;
8403 1319 : return GF_OK;
8404 : default:
8405 0 : return GF_BAD_PARAM;
8406 : }
8407 6213 : }
8408 :
8409 :
8410 : static s32 IndexedLineSet2D_get_field_index_by_name(char *name)
8411 : {
8412 378 : if (!strcmp("set_colorIndex", name)) return 0;
8413 189 : if (!strcmp("set_coordIndex", name)) return 1;
8414 197 : if (!strcmp("color", name)) return 2;
8415 294 : if (!strcmp("coord", name)) return 3;
8416 76 : if (!strcmp("colorIndex", name)) return 4;
8417 68 : if (!strcmp("colorPerVertex", name)) return 5;
8418 104 : if (!strcmp("coordIndex", name)) return 6;
8419 0 : return -1;
8420 189 : }
8421 : static Bool IndexedLineSet2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
8422 : {
8423 0 : switch (FieldIndex) {
8424 : case 4:
8425 0 : *AType = 0;
8426 0 : *QType = 14;
8427 0 : *b_min = FLT2FIX(-1);
8428 0 : *b_max = FIX_MAX;
8429 0 : return 1;
8430 : case 6:
8431 0 : *AType = 0;
8432 0 : *QType = 14;
8433 0 : *b_min = FLT2FIX(-1);
8434 0 : *b_max = FIX_MAX;
8435 0 : return 1;
8436 : default:
8437 0 : return 0;
8438 : }
8439 0 : }
8440 :
8441 :
8442 :
8443 : GF_Node *IndexedLineSet2D_Create()
8444 : {
8445 : M_IndexedLineSet2D *p;
8446 2505 : GF_SAFEALLOC(p, M_IndexedLineSet2D);
8447 835 : if(!p) return NULL;
8448 835 : gf_node_setup((GF_Node *)p, TAG_MPEG4_IndexedLineSet2D);
8449 :
8450 : /*default field values*/
8451 835 : p->colorPerVertex = 1;
8452 835 : return (GF_Node *)p;
8453 835 : }
8454 :
8455 :
8456 : /*
8457 : Inline Node deletion
8458 : */
8459 :
8460 : static void Inline_Del(GF_Node *node)
8461 : {
8462 512 : M_Inline *p = (M_Inline *) node;
8463 256 : gf_sg_mfurl_del(p->url);
8464 256 : gf_node_free((GF_Node *) p);
8465 256 : }
8466 :
8467 : static const u16 Inline_Def2All[] = { 0};
8468 : static const u16 Inline_In2All[] = { 0};
8469 : static const u16 Inline_Out2All[] = { 0};
8470 :
8471 : static u32 Inline_get_field_count(GF_Node *node, u8 IndexMode)
8472 : {
8473 398 : switch(IndexMode) {
8474 : case GF_SG_FIELD_CODING_IN:
8475 0 : return 1;
8476 : case GF_SG_FIELD_CODING_DEF:
8477 108 : return 1;
8478 : case GF_SG_FIELD_CODING_OUT:
8479 0 : return 1;
8480 : case GF_SG_FIELD_CODING_DYN:
8481 0 : return 0;
8482 : default:
8483 91 : return 1;
8484 : }
8485 199 : }
8486 :
8487 : static GF_Err Inline_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
8488 : {
8489 168 : switch(IndexMode) {
8490 : case GF_SG_FIELD_CODING_IN:
8491 0 : *allField = Inline_In2All[inField];
8492 0 : return GF_OK;
8493 : case GF_SG_FIELD_CODING_DEF:
8494 84 : *allField = Inline_Def2All[inField];
8495 84 : return GF_OK;
8496 : case GF_SG_FIELD_CODING_OUT:
8497 0 : *allField = Inline_Out2All[inField];
8498 0 : return GF_OK;
8499 : default:
8500 0 : return GF_BAD_PARAM;
8501 : }
8502 84 : }
8503 : static GF_Err Inline_get_field(GF_Node *node, GF_FieldInfo *info)
8504 : {
8505 936 : switch (info->fieldIndex) {
8506 : case 0:
8507 468 : info->name = "url";
8508 468 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8509 468 : info->fieldType = GF_SG_VRML_MFURL;
8510 468 : info->far_ptr = & ((M_Inline *) node)->url;
8511 468 : return GF_OK;
8512 : default:
8513 0 : return GF_BAD_PARAM;
8514 : }
8515 468 : }
8516 :
8517 :
8518 : static s32 Inline_get_field_index_by_name(char *name)
8519 : {
8520 329 : if (!strcmp("url", name)) return 0;
8521 49 : return -1;
8522 126 : }
8523 : static Bool Inline_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
8524 : {
8525 : switch (FieldIndex) {
8526 : default:
8527 0 : return 0;
8528 : }
8529 : }
8530 :
8531 :
8532 :
8533 : GF_Node *Inline_Create()
8534 : {
8535 : M_Inline *p;
8536 768 : GF_SAFEALLOC(p, M_Inline);
8537 256 : if(!p) return NULL;
8538 256 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Inline);
8539 :
8540 : /*default field values*/
8541 256 : return (GF_Node *)p;
8542 256 : }
8543 :
8544 :
8545 : /*
8546 : LOD Node deletion
8547 : */
8548 :
8549 : static void LOD_Del(GF_Node *node)
8550 : {
8551 36 : M_LOD *p = (M_LOD *) node;
8552 18 : gf_node_unregister_children((GF_Node *) p, p->level);
8553 18 : gf_sg_mffloat_del(p->range);
8554 18 : gf_node_free((GF_Node *) p);
8555 18 : }
8556 :
8557 : static const u16 LOD_Def2All[] = { 0, 1, 2};
8558 : static const u16 LOD_In2All[] = { 0};
8559 : static const u16 LOD_Out2All[] = { 0};
8560 :
8561 : static u32 LOD_get_field_count(GF_Node *node, u8 IndexMode)
8562 : {
8563 32 : switch(IndexMode) {
8564 : case GF_SG_FIELD_CODING_IN:
8565 0 : return 1;
8566 : case GF_SG_FIELD_CODING_DEF:
8567 9 : return 3;
8568 : case GF_SG_FIELD_CODING_OUT:
8569 0 : return 1;
8570 : case GF_SG_FIELD_CODING_DYN:
8571 0 : return 0;
8572 : default:
8573 7 : return 3;
8574 : }
8575 16 : }
8576 :
8577 : static GF_Err LOD_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
8578 : {
8579 32 : switch(IndexMode) {
8580 : case GF_SG_FIELD_CODING_IN:
8581 0 : *allField = LOD_In2All[inField];
8582 0 : return GF_OK;
8583 : case GF_SG_FIELD_CODING_DEF:
8584 16 : *allField = LOD_Def2All[inField];
8585 16 : return GF_OK;
8586 : case GF_SG_FIELD_CODING_OUT:
8587 0 : *allField = LOD_Out2All[inField];
8588 0 : return GF_OK;
8589 : default:
8590 0 : return GF_BAD_PARAM;
8591 : }
8592 16 : }
8593 : static GF_Err LOD_get_field(GF_Node *node, GF_FieldInfo *info)
8594 : {
8595 154 : switch (info->fieldIndex) {
8596 : case 0:
8597 24 : info->name = "level";
8598 24 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8599 24 : info->fieldType = GF_SG_VRML_MFNODE;
8600 24 : info->NDTtype = NDT_SF3DNode;
8601 24 : info->far_ptr = & ((M_LOD *)node)->level;
8602 24 : return GF_OK;
8603 : case 1:
8604 20 : info->name = "center";
8605 20 : info->eventType = GF_SG_EVENT_FIELD;
8606 20 : info->fieldType = GF_SG_VRML_SFVEC3F;
8607 20 : info->far_ptr = & ((M_LOD *) node)->center;
8608 20 : return GF_OK;
8609 : case 2:
8610 33 : info->name = "range";
8611 33 : info->eventType = GF_SG_EVENT_FIELD;
8612 33 : info->fieldType = GF_SG_VRML_MFFLOAT;
8613 33 : info->far_ptr = & ((M_LOD *) node)->range;
8614 33 : return GF_OK;
8615 : default:
8616 0 : return GF_BAD_PARAM;
8617 : }
8618 77 : }
8619 :
8620 :
8621 : static s32 LOD_get_field_index_by_name(char *name)
8622 : {
8623 24 : if (!strcmp("level", name)) return 0;
8624 8 : if (!strcmp("center", name)) return 1;
8625 8 : if (!strcmp("range", name)) return 2;
8626 0 : return -1;
8627 10 : }
8628 : static Bool LOD_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
8629 : {
8630 0 : switch (FieldIndex) {
8631 : case 1:
8632 0 : *AType = 0;
8633 0 : *QType = 1;
8634 0 : *b_min = FIX_MIN;
8635 0 : *b_max = FIX_MAX;
8636 0 : return 1;
8637 : case 2:
8638 0 : *AType = 0;
8639 0 : *QType = 11;
8640 0 : *b_min = FLT2FIX(0);
8641 0 : *b_max = FIX_MAX;
8642 0 : return 1;
8643 : default:
8644 0 : return 0;
8645 : }
8646 0 : }
8647 :
8648 :
8649 :
8650 : GF_Node *LOD_Create()
8651 : {
8652 : M_LOD *p;
8653 54 : GF_SAFEALLOC(p, M_LOD);
8654 18 : if(!p) return NULL;
8655 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_LOD);
8656 :
8657 : /*default field values*/
8658 18 : p->center.x = FLT2FIX(0);
8659 18 : p->center.y = FLT2FIX(0);
8660 18 : p->center.z = FLT2FIX(0);
8661 18 : return (GF_Node *)p;
8662 18 : }
8663 :
8664 :
8665 : /*
8666 : Layer2D Node deletion
8667 : */
8668 :
8669 : static void Layer2D_Del(GF_Node *node)
8670 : {
8671 734 : M_Layer2D *p = (M_Layer2D *) node;
8672 367 : gf_node_unregister((GF_Node *) p->background, (GF_Node *) p);
8673 367 : gf_node_unregister((GF_Node *) p->viewport, (GF_Node *) p);
8674 367 : gf_sg_vrml_parent_destroy((GF_Node *) p);
8675 367 : gf_node_free((GF_Node *) p);
8676 367 : }
8677 :
8678 : static const u16 Layer2D_Def2All[] = { 2, 3, 4, 5};
8679 : static const u16 Layer2D_In2All[] = { 0, 1, 2, 3, 4, 5};
8680 : static const u16 Layer2D_Out2All[] = { 2, 3, 4, 5};
8681 : static const u16 Layer2D_Dyn2All[] = { 3};
8682 :
8683 : static u32 Layer2D_get_field_count(GF_Node *node, u8 IndexMode)
8684 : {
8685 664 : switch(IndexMode) {
8686 : case GF_SG_FIELD_CODING_IN:
8687 27 : return 6;
8688 : case GF_SG_FIELD_CODING_DEF:
8689 171 : return 4;
8690 : case GF_SG_FIELD_CODING_OUT:
8691 0 : return 4;
8692 : case GF_SG_FIELD_CODING_DYN:
8693 0 : return 1;
8694 : default:
8695 134 : return 6;
8696 : }
8697 332 : }
8698 :
8699 : static GF_Err Layer2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
8700 : {
8701 922 : switch(IndexMode) {
8702 : case GF_SG_FIELD_CODING_IN:
8703 39 : *allField = Layer2D_In2All[inField];
8704 39 : return GF_OK;
8705 : case GF_SG_FIELD_CODING_DEF:
8706 422 : *allField = Layer2D_Def2All[inField];
8707 422 : return GF_OK;
8708 : case GF_SG_FIELD_CODING_OUT:
8709 0 : *allField = Layer2D_Out2All[inField];
8710 0 : return GF_OK;
8711 : case GF_SG_FIELD_CODING_DYN:
8712 0 : *allField = Layer2D_Dyn2All[inField];
8713 0 : return GF_OK;
8714 : default:
8715 0 : return GF_BAD_PARAM;
8716 : }
8717 461 : }
8718 : static GF_Err Layer2D_get_field(GF_Node *node, GF_FieldInfo *info)
8719 : {
8720 4652 : switch (info->fieldIndex) {
8721 : case 0:
8722 134 : info->name = "addChildren";
8723 134 : info->eventType = GF_SG_EVENT_IN;
8724 134 : info->on_event_in = ((M_Layer2D *)node)->on_addChildren;
8725 134 : info->fieldType = GF_SG_VRML_MFNODE;
8726 134 : info->NDTtype = NDT_SF2DNode;
8727 134 : info->far_ptr = & ((M_Layer2D *)node)->addChildren;
8728 134 : return GF_OK;
8729 : case 1:
8730 134 : info->name = "removeChildren";
8731 134 : info->eventType = GF_SG_EVENT_IN;
8732 134 : info->on_event_in = ((M_Layer2D *)node)->on_removeChildren;
8733 134 : info->fieldType = GF_SG_VRML_MFNODE;
8734 134 : info->NDTtype = NDT_SF2DNode;
8735 134 : info->far_ptr = & ((M_Layer2D *)node)->removeChildren;
8736 134 : return GF_OK;
8737 : case 2:
8738 537 : info->name = "children";
8739 537 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8740 537 : info->fieldType = GF_SG_VRML_MFNODE;
8741 537 : info->NDTtype = NDT_SF2DNode;
8742 537 : info->far_ptr = & ((M_Layer2D *)node)->children;
8743 537 : return GF_OK;
8744 : case 3:
8745 922 : info->name = "size";
8746 922 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8747 922 : info->fieldType = GF_SG_VRML_SFVEC2F;
8748 922 : info->far_ptr = & ((M_Layer2D *) node)->size;
8749 922 : return GF_OK;
8750 : case 4:
8751 217 : info->name = "background";
8752 217 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8753 217 : info->fieldType = GF_SG_VRML_SFNODE;
8754 217 : info->NDTtype = NDT_SFBackground2DNode;
8755 217 : info->far_ptr = & ((M_Layer2D *)node)->background;
8756 217 : return GF_OK;
8757 : case 5:
8758 382 : info->name = "viewport";
8759 382 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8760 382 : info->fieldType = GF_SG_VRML_SFNODE;
8761 382 : info->NDTtype = NDT_SFViewportNode;
8762 382 : info->far_ptr = & ((M_Layer2D *)node)->viewport;
8763 382 : return GF_OK;
8764 : default:
8765 0 : return GF_BAD_PARAM;
8766 : }
8767 2326 : }
8768 :
8769 :
8770 : static s32 Layer2D_get_field_index_by_name(char *name)
8771 : {
8772 1088 : if (!strcmp("addChildren", name)) return 0;
8773 544 : if (!strcmp("removeChildren", name)) return 1;
8774 676 : if (!strcmp("children", name)) return 2;
8775 756 : if (!strcmp("size", name)) return 3;
8776 80 : if (!strcmp("background", name)) return 4;
8777 112 : if (!strcmp("viewport", name)) return 5;
8778 0 : return -1;
8779 544 : }
8780 : static Bool Layer2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
8781 : {
8782 0 : switch (FieldIndex) {
8783 : case 3:
8784 0 : *AType = 12;
8785 0 : *QType = 12;
8786 0 : *b_min = FIX_MIN;
8787 0 : *b_max = FIX_MAX;
8788 0 : return 1;
8789 : default:
8790 0 : return 0;
8791 : }
8792 0 : }
8793 :
8794 :
8795 :
8796 : GF_Node *Layer2D_Create()
8797 : {
8798 : M_Layer2D *p;
8799 1101 : GF_SAFEALLOC(p, M_Layer2D);
8800 367 : if(!p) return NULL;
8801 367 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Layer2D);
8802 367 : gf_sg_vrml_parent_setup((GF_Node *) p);
8803 :
8804 : /*default field values*/
8805 367 : p->size.x = FLT2FIX(-1);
8806 367 : p->size.y = FLT2FIX(-1);
8807 367 : return (GF_Node *)p;
8808 367 : }
8809 :
8810 :
8811 : /*
8812 : Layer3D Node deletion
8813 : */
8814 :
8815 : static void Layer3D_Del(GF_Node *node)
8816 : {
8817 184 : M_Layer3D *p = (M_Layer3D *) node;
8818 92 : gf_node_unregister((GF_Node *) p->background, (GF_Node *) p);
8819 92 : gf_node_unregister((GF_Node *) p->fog, (GF_Node *) p);
8820 92 : gf_node_unregister((GF_Node *) p->navigationInfo, (GF_Node *) p);
8821 92 : gf_node_unregister((GF_Node *) p->viewpoint, (GF_Node *) p);
8822 92 : gf_sg_vrml_parent_destroy((GF_Node *) p);
8823 92 : gf_node_free((GF_Node *) p);
8824 92 : }
8825 :
8826 : static const u16 Layer3D_Def2All[] = { 2, 3, 4, 5, 6, 7};
8827 : static const u16 Layer3D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
8828 : static const u16 Layer3D_Out2All[] = { 2, 3, 4, 5, 6, 7};
8829 : static const u16 Layer3D_Dyn2All[] = { 3};
8830 :
8831 : static u32 Layer3D_get_field_count(GF_Node *node, u8 IndexMode)
8832 : {
8833 164 : switch(IndexMode) {
8834 : case GF_SG_FIELD_CODING_IN:
8835 0 : return 8;
8836 : case GF_SG_FIELD_CODING_DEF:
8837 45 : return 6;
8838 : case GF_SG_FIELD_CODING_OUT:
8839 0 : return 6;
8840 : case GF_SG_FIELD_CODING_DYN:
8841 0 : return 1;
8842 : default:
8843 37 : return 8;
8844 : }
8845 82 : }
8846 :
8847 : static GF_Err Layer3D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
8848 : {
8849 310 : switch(IndexMode) {
8850 : case GF_SG_FIELD_CODING_IN:
8851 0 : *allField = Layer3D_In2All[inField];
8852 0 : return GF_OK;
8853 : case GF_SG_FIELD_CODING_DEF:
8854 155 : *allField = Layer3D_Def2All[inField];
8855 155 : return GF_OK;
8856 : case GF_SG_FIELD_CODING_OUT:
8857 0 : *allField = Layer3D_Out2All[inField];
8858 0 : return GF_OK;
8859 : case GF_SG_FIELD_CODING_DYN:
8860 0 : *allField = Layer3D_Dyn2All[inField];
8861 0 : return GF_OK;
8862 : default:
8863 0 : return GF_BAD_PARAM;
8864 : }
8865 155 : }
8866 : static GF_Err Layer3D_get_field(GF_Node *node, GF_FieldInfo *info)
8867 : {
8868 1376 : switch (info->fieldIndex) {
8869 : case 0:
8870 37 : info->name = "addChildren";
8871 37 : info->eventType = GF_SG_EVENT_IN;
8872 37 : info->on_event_in = ((M_Layer3D *)node)->on_addChildren;
8873 37 : info->fieldType = GF_SG_VRML_MFNODE;
8874 37 : info->NDTtype = NDT_SF3DNode;
8875 37 : info->far_ptr = & ((M_Layer3D *)node)->addChildren;
8876 37 : return GF_OK;
8877 : case 1:
8878 37 : info->name = "removeChildren";
8879 37 : info->eventType = GF_SG_EVENT_IN;
8880 37 : info->on_event_in = ((M_Layer3D *)node)->on_removeChildren;
8881 37 : info->fieldType = GF_SG_VRML_MFNODE;
8882 37 : info->NDTtype = NDT_SF3DNode;
8883 37 : info->far_ptr = & ((M_Layer3D *)node)->removeChildren;
8884 37 : return GF_OK;
8885 : case 2:
8886 122 : info->name = "children";
8887 122 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8888 122 : info->fieldType = GF_SG_VRML_MFNODE;
8889 122 : info->NDTtype = NDT_SF3DNode;
8890 122 : info->far_ptr = & ((M_Layer3D *)node)->children;
8891 122 : return GF_OK;
8892 : case 3:
8893 169 : info->name = "size";
8894 169 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8895 169 : info->fieldType = GF_SG_VRML_SFVEC2F;
8896 169 : info->far_ptr = & ((M_Layer3D *) node)->size;
8897 169 : return GF_OK;
8898 : case 4:
8899 47 : info->name = "background";
8900 47 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8901 47 : info->fieldType = GF_SG_VRML_SFNODE;
8902 47 : info->NDTtype = NDT_SFBackground3DNode;
8903 47 : info->far_ptr = & ((M_Layer3D *)node)->background;
8904 47 : return GF_OK;
8905 : case 5:
8906 47 : info->name = "fog";
8907 47 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8908 47 : info->fieldType = GF_SG_VRML_SFNODE;
8909 47 : info->NDTtype = NDT_SFFogNode;
8910 47 : info->far_ptr = & ((M_Layer3D *)node)->fog;
8911 47 : return GF_OK;
8912 : case 6:
8913 122 : info->name = "navigationInfo";
8914 122 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8915 122 : info->fieldType = GF_SG_VRML_SFNODE;
8916 122 : info->NDTtype = NDT_SFNavigationInfoNode;
8917 122 : info->far_ptr = & ((M_Layer3D *)node)->navigationInfo;
8918 122 : return GF_OK;
8919 : case 7:
8920 107 : info->name = "viewpoint";
8921 107 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8922 107 : info->fieldType = GF_SG_VRML_SFNODE;
8923 107 : info->NDTtype = NDT_SFViewpointNode;
8924 107 : info->far_ptr = & ((M_Layer3D *)node)->viewpoint;
8925 107 : return GF_OK;
8926 : default:
8927 0 : return GF_BAD_PARAM;
8928 : }
8929 688 : }
8930 :
8931 :
8932 : static s32 Layer3D_get_field_index_by_name(char *name)
8933 : {
8934 152 : if (!strcmp("addChildren", name)) return 0;
8935 76 : if (!strcmp("removeChildren", name)) return 1;
8936 96 : if (!strcmp("children", name)) return 2;
8937 76 : if (!strcmp("size", name)) return 3;
8938 36 : if (!strcmp("background", name)) return 4;
8939 36 : if (!strcmp("fog", name)) return 5;
8940 56 : if (!strcmp("navigationInfo", name)) return 6;
8941 32 : if (!strcmp("viewpoint", name)) return 7;
8942 0 : return -1;
8943 76 : }
8944 : static Bool Layer3D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
8945 : {
8946 0 : switch (FieldIndex) {
8947 : case 3:
8948 0 : *AType = 12;
8949 0 : *QType = 12;
8950 0 : *b_min = FIX_MIN;
8951 0 : *b_max = FIX_MAX;
8952 0 : return 1;
8953 : default:
8954 0 : return 0;
8955 : }
8956 0 : }
8957 :
8958 :
8959 :
8960 : GF_Node *Layer3D_Create()
8961 : {
8962 : M_Layer3D *p;
8963 276 : GF_SAFEALLOC(p, M_Layer3D);
8964 92 : if(!p) return NULL;
8965 92 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Layer3D);
8966 92 : gf_sg_vrml_parent_setup((GF_Node *) p);
8967 :
8968 : /*default field values*/
8969 92 : p->size.x = FLT2FIX(-1);
8970 92 : p->size.y = FLT2FIX(-1);
8971 92 : return (GF_Node *)p;
8972 92 : }
8973 :
8974 :
8975 : /*
8976 : Layout Node deletion
8977 : */
8978 :
8979 : static void Layout_Del(GF_Node *node)
8980 : {
8981 5040 : M_Layout *p = (M_Layout *) node;
8982 2520 : gf_sg_mfstring_del(p->justify);
8983 2520 : gf_sg_vrml_parent_destroy((GF_Node *) p);
8984 2520 : gf_node_free((GF_Node *) p);
8985 2520 : }
8986 :
8987 : static const u16 Layout_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
8988 : static const u16 Layout_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
8989 : static const u16 Layout_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
8990 : static const u16 Layout_Dyn2All[] = { 4, 9, 13};
8991 :
8992 : static u32 Layout_get_field_count(GF_Node *node, u8 IndexMode)
8993 : {
8994 4984 : switch(IndexMode) {
8995 : case GF_SG_FIELD_CODING_IN:
8996 252 : return 15;
8997 : case GF_SG_FIELD_CODING_DEF:
8998 1260 : return 13;
8999 : case GF_SG_FIELD_CODING_OUT:
9000 0 : return 13;
9001 : case GF_SG_FIELD_CODING_DYN:
9002 0 : return 3;
9003 : default:
9004 980 : return 15;
9005 : }
9006 2492 : }
9007 :
9008 : static GF_Err Layout_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
9009 : {
9010 16838 : switch(IndexMode) {
9011 : case GF_SG_FIELD_CODING_IN:
9012 844 : *allField = Layout_In2All[inField];
9013 844 : return GF_OK;
9014 : case GF_SG_FIELD_CODING_DEF:
9015 7575 : *allField = Layout_Def2All[inField];
9016 7575 : return GF_OK;
9017 : case GF_SG_FIELD_CODING_OUT:
9018 0 : *allField = Layout_Out2All[inField];
9019 0 : return GF_OK;
9020 : case GF_SG_FIELD_CODING_DYN:
9021 0 : *allField = Layout_Dyn2All[inField];
9022 0 : return GF_OK;
9023 : default:
9024 0 : return GF_BAD_PARAM;
9025 : }
9026 8419 : }
9027 : static GF_Err Layout_get_field(GF_Node *node, GF_FieldInfo *info)
9028 : {
9029 91374 : switch (info->fieldIndex) {
9030 : case 0:
9031 980 : info->name = "addChildren";
9032 980 : info->eventType = GF_SG_EVENT_IN;
9033 980 : info->on_event_in = ((M_Layout *)node)->on_addChildren;
9034 980 : info->fieldType = GF_SG_VRML_MFNODE;
9035 980 : info->NDTtype = NDT_SF2DNode;
9036 980 : info->far_ptr = & ((M_Layout *)node)->addChildren;
9037 980 : return GF_OK;
9038 : case 1:
9039 980 : info->name = "removeChildren";
9040 980 : info->eventType = GF_SG_EVENT_IN;
9041 980 : info->on_event_in = ((M_Layout *)node)->on_removeChildren;
9042 980 : info->fieldType = GF_SG_VRML_MFNODE;
9043 980 : info->NDTtype = NDT_SF2DNode;
9044 980 : info->far_ptr = & ((M_Layout *)node)->removeChildren;
9045 980 : return GF_OK;
9046 : case 2:
9047 3360 : info->name = "children";
9048 3360 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9049 3360 : info->fieldType = GF_SG_VRML_MFNODE;
9050 3360 : info->NDTtype = NDT_SF2DNode;
9051 3360 : info->far_ptr = & ((M_Layout *)node)->children;
9052 3360 : return GF_OK;
9053 : case 3:
9054 3975 : info->name = "wrap";
9055 3975 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9056 3975 : info->fieldType = GF_SG_VRML_SFBOOL;
9057 3975 : info->far_ptr = & ((M_Layout *) node)->wrap;
9058 3975 : return GF_OK;
9059 : case 4:
9060 4620 : info->name = "size";
9061 4620 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9062 4620 : info->fieldType = GF_SG_VRML_SFVEC2F;
9063 4620 : info->far_ptr = & ((M_Layout *) node)->size;
9064 4620 : return GF_OK;
9065 : case 5:
9066 3405 : info->name = "horizontal";
9067 3405 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9068 3405 : info->fieldType = GF_SG_VRML_SFBOOL;
9069 3405 : info->far_ptr = & ((M_Layout *) node)->horizontal;
9070 3405 : return GF_OK;
9071 : case 6:
9072 4680 : info->name = "justify";
9073 4680 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9074 4680 : info->fieldType = GF_SG_VRML_MFSTRING;
9075 4680 : info->far_ptr = & ((M_Layout *) node)->justify;
9076 4680 : return GF_OK;
9077 : case 7:
9078 3330 : info->name = "leftToRight";
9079 3330 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9080 3330 : info->fieldType = GF_SG_VRML_SFBOOL;
9081 3330 : info->far_ptr = & ((M_Layout *) node)->leftToRight;
9082 3330 : return GF_OK;
9083 : case 8:
9084 3285 : info->name = "topToBottom";
9085 3285 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9086 3285 : info->fieldType = GF_SG_VRML_SFBOOL;
9087 3285 : info->far_ptr = & ((M_Layout *) node)->topToBottom;
9088 3285 : return GF_OK;
9089 : case 9:
9090 3435 : info->name = "spacing";
9091 3435 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9092 3435 : info->fieldType = GF_SG_VRML_SFFLOAT;
9093 3435 : info->far_ptr = & ((M_Layout *) node)->spacing;
9094 3435 : return GF_OK;
9095 : case 10:
9096 2715 : info->name = "smoothScroll";
9097 2715 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9098 2715 : info->fieldType = GF_SG_VRML_SFBOOL;
9099 2715 : info->far_ptr = & ((M_Layout *) node)->smoothScroll;
9100 2715 : return GF_OK;
9101 : case 11:
9102 2715 : info->name = "loop";
9103 2715 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9104 2715 : info->fieldType = GF_SG_VRML_SFBOOL;
9105 2715 : info->far_ptr = & ((M_Layout *) node)->loop;
9106 2715 : return GF_OK;
9107 : case 12:
9108 2685 : info->name = "scrollVertical";
9109 2685 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9110 2685 : info->fieldType = GF_SG_VRML_SFBOOL;
9111 2685 : info->far_ptr = & ((M_Layout *) node)->scrollVertical;
9112 2685 : return GF_OK;
9113 : case 13:
9114 2882 : info->name = "scrollRate";
9115 2882 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9116 2882 : info->fieldType = GF_SG_VRML_SFFLOAT;
9117 2882 : info->far_ptr = & ((M_Layout *) node)->scrollRate;
9118 2882 : return GF_OK;
9119 : case 14:
9120 2640 : info->name = "scrollMode";
9121 2640 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9122 2640 : info->fieldType = GF_SG_VRML_SFINT32;
9123 2640 : info->far_ptr = & ((M_Layout *) node)->scrollMode;
9124 2640 : return GF_OK;
9125 : default:
9126 0 : return GF_BAD_PARAM;
9127 : }
9128 45687 : }
9129 :
9130 :
9131 : static s32 Layout_get_field_index_by_name(char *name)
9132 : {
9133 6524 : if (!strcmp("addChildren", name)) return 0;
9134 3262 : if (!strcmp("removeChildren", name)) return 1;
9135 3822 : if (!strcmp("children", name)) return 2;
9136 3090 : if (!strcmp("wrap", name)) return 3;
9137 2874 : if (!strcmp("size", name)) return 4;
9138 1990 : if (!strcmp("horizontal", name)) return 5;
9139 2094 : if (!strcmp("justify", name)) return 6;
9140 1158 : if (!strcmp("leftToRight", name)) return 7;
9141 930 : if (!strcmp("topToBottom", name)) return 8;
9142 766 : if (!strcmp("spacing", name)) return 9;
9143 330 : if (!strcmp("smoothScroll", name)) return 10;
9144 278 : if (!strcmp("loop", name)) return 11;
9145 218 : if (!strcmp("scrollVertical", name)) return 12;
9146 228 : if (!strcmp("scrollRate", name)) return 13;
9147 64 : if (!strcmp("scrollMode", name)) return 14;
9148 0 : return -1;
9149 3262 : }
9150 : static Bool Layout_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
9151 : {
9152 0 : switch (FieldIndex) {
9153 : case 4:
9154 0 : *AType = 12;
9155 0 : *QType = 12;
9156 0 : *b_min = FLT2FIX(0);
9157 0 : *b_max = FIX_MAX;
9158 0 : return 1;
9159 : case 9:
9160 0 : *AType = 7;
9161 0 : *QType = 0;
9162 0 : *b_min = FLT2FIX(0);
9163 0 : *b_max = FIX_MAX;
9164 0 : return 1;
9165 : case 13:
9166 0 : *AType = 7;
9167 0 : *QType = 0;
9168 0 : *b_min = FIX_MIN;
9169 0 : *b_max = FIX_MAX;
9170 0 : return 1;
9171 : case 14:
9172 0 : *AType = 0;
9173 0 : *QType = 13;
9174 0 : *QT13_bits = 2;
9175 0 : *b_min = FLT2FIX(-1);
9176 0 : *b_max = FLT2FIX(1);
9177 0 : return 1;
9178 : default:
9179 0 : return 0;
9180 : }
9181 0 : }
9182 :
9183 :
9184 :
9185 : GF_Node *Layout_Create()
9186 : {
9187 : M_Layout *p;
9188 7560 : GF_SAFEALLOC(p, M_Layout);
9189 2520 : if(!p) return NULL;
9190 2520 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Layout);
9191 2520 : gf_sg_vrml_parent_setup((GF_Node *) p);
9192 :
9193 : /*default field values*/
9194 2520 : p->size.x = FLT2FIX(-1);
9195 2520 : p->size.y = FLT2FIX(-1);
9196 2520 : p->horizontal = 1;
9197 2520 : p->justify.vals = (char**)gf_malloc(sizeof(SFString)*1);
9198 2520 : p->justify.count = 1;
9199 2520 : p->justify.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
9200 2520 : strcpy(p->justify.vals[0], "BEGIN");
9201 2520 : p->leftToRight = 1;
9202 2520 : p->topToBottom = 1;
9203 2520 : p->spacing = FLT2FIX(1);
9204 2520 : p->scrollVertical = 1;
9205 2520 : p->scrollRate = FLT2FIX(0);
9206 2520 : p->scrollMode = 0;
9207 2520 : return (GF_Node *)p;
9208 2520 : }
9209 :
9210 :
9211 : /*
9212 : LineProperties Node deletion
9213 : */
9214 :
9215 : static void LineProperties_Del(GF_Node *node)
9216 : {
9217 2696 : M_LineProperties *p = (M_LineProperties *) node;
9218 1348 : gf_node_free((GF_Node *) p);
9219 1348 : }
9220 :
9221 : static const u16 LineProperties_Def2All[] = { 0, 1, 2};
9222 : static const u16 LineProperties_In2All[] = { 0, 1, 2};
9223 : static const u16 LineProperties_Out2All[] = { 0, 1, 2};
9224 : static const u16 LineProperties_Dyn2All[] = { 0, 2};
9225 :
9226 : static u32 LineProperties_get_field_count(GF_Node *node, u8 IndexMode)
9227 : {
9228 2566 : switch(IndexMode) {
9229 : case GF_SG_FIELD_CODING_IN:
9230 0 : return 3;
9231 : case GF_SG_FIELD_CODING_DEF:
9232 618 : return 3;
9233 : case GF_SG_FIELD_CODING_OUT:
9234 0 : return 3;
9235 : case GF_SG_FIELD_CODING_DYN:
9236 0 : return 2;
9237 : default:
9238 665 : return 3;
9239 : }
9240 1283 : }
9241 :
9242 : static GF_Err LineProperties_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
9243 : {
9244 1688 : switch(IndexMode) {
9245 : case GF_SG_FIELD_CODING_IN:
9246 0 : *allField = LineProperties_In2All[inField];
9247 0 : return GF_OK;
9248 : case GF_SG_FIELD_CODING_DEF:
9249 844 : *allField = LineProperties_Def2All[inField];
9250 844 : return GF_OK;
9251 : case GF_SG_FIELD_CODING_OUT:
9252 0 : *allField = LineProperties_Out2All[inField];
9253 0 : return GF_OK;
9254 : case GF_SG_FIELD_CODING_DYN:
9255 0 : *allField = LineProperties_Dyn2All[inField];
9256 0 : return GF_OK;
9257 : default:
9258 0 : return GF_BAD_PARAM;
9259 : }
9260 844 : }
9261 : static GF_Err LineProperties_get_field(GF_Node *node, GF_FieldInfo *info)
9262 : {
9263 11638 : switch (info->fieldIndex) {
9264 : case 0:
9265 2008 : info->name = "lineColor";
9266 2008 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9267 2008 : info->fieldType = GF_SG_VRML_SFCOLOR;
9268 2008 : info->far_ptr = & ((M_LineProperties *) node)->lineColor;
9269 2008 : return GF_OK;
9270 : case 1:
9271 1609 : info->name = "lineStyle";
9272 1609 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9273 1609 : info->fieldType = GF_SG_VRML_SFINT32;
9274 1609 : info->far_ptr = & ((M_LineProperties *) node)->lineStyle;
9275 1609 : return GF_OK;
9276 : case 2:
9277 2202 : info->name = "width";
9278 2202 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9279 2202 : info->fieldType = GF_SG_VRML_SFFLOAT;
9280 2202 : info->far_ptr = & ((M_LineProperties *) node)->width;
9281 2202 : return GF_OK;
9282 : default:
9283 0 : return GF_BAD_PARAM;
9284 : }
9285 5819 : }
9286 :
9287 :
9288 : static s32 LineProperties_get_field_index_by_name(char *name)
9289 : {
9290 668 : if (!strcmp("lineColor", name)) return 0;
9291 151 : if (!strcmp("lineStyle", name)) return 1;
9292 278 : if (!strcmp("width", name)) return 2;
9293 0 : return -1;
9294 271 : }
9295 : static Bool LineProperties_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
9296 : {
9297 0 : switch (FieldIndex) {
9298 : case 0:
9299 0 : *AType = 4;
9300 0 : *QType = 4;
9301 0 : *b_min = FLT2FIX(0);
9302 0 : *b_max = FLT2FIX(1);
9303 0 : return 1;
9304 : case 1:
9305 0 : *AType = 0;
9306 0 : *QType = 13;
9307 0 : *QT13_bits = 3;
9308 0 : *b_min = FLT2FIX(0);
9309 0 : *b_max = FLT2FIX(5);
9310 0 : return 1;
9311 : case 2:
9312 0 : *AType = 7;
9313 0 : *QType = 12;
9314 0 : *b_min = FLT2FIX(0);
9315 0 : *b_max = FIX_MAX;
9316 0 : return 1;
9317 : default:
9318 0 : return 0;
9319 : }
9320 0 : }
9321 :
9322 :
9323 :
9324 : GF_Node *LineProperties_Create()
9325 : {
9326 : M_LineProperties *p;
9327 4044 : GF_SAFEALLOC(p, M_LineProperties);
9328 1348 : if(!p) return NULL;
9329 1348 : gf_node_setup((GF_Node *)p, TAG_MPEG4_LineProperties);
9330 :
9331 : /*default field values*/
9332 1348 : p->lineColor.red = FLT2FIX(0);
9333 1348 : p->lineColor.green = FLT2FIX(0);
9334 1348 : p->lineColor.blue = FLT2FIX(0);
9335 1348 : p->lineStyle = 0;
9336 1348 : p->width = FLT2FIX(1);
9337 1348 : return (GF_Node *)p;
9338 1348 : }
9339 :
9340 :
9341 : /*
9342 : ListeningPoint Node deletion
9343 : */
9344 :
9345 : static void ListeningPoint_Del(GF_Node *node)
9346 : {
9347 0 : M_ListeningPoint *p = (M_ListeningPoint *) node;
9348 0 : gf_sg_sfstring_del(p->description);
9349 0 : gf_node_free((GF_Node *) p);
9350 0 : }
9351 :
9352 : static const u16 ListeningPoint_Def2All[] = { 1, 2, 3, 4};
9353 : static const u16 ListeningPoint_In2All[] = { 0, 1, 2, 3};
9354 : static const u16 ListeningPoint_Out2All[] = { 1, 2, 3, 5, 6};
9355 : static const u16 ListeningPoint_Dyn2All[] = { 2, 3};
9356 :
9357 : static u32 ListeningPoint_get_field_count(GF_Node *node, u8 IndexMode)
9358 : {
9359 0 : switch(IndexMode) {
9360 : case GF_SG_FIELD_CODING_IN:
9361 0 : return 4;
9362 : case GF_SG_FIELD_CODING_DEF:
9363 0 : return 4;
9364 : case GF_SG_FIELD_CODING_OUT:
9365 0 : return 5;
9366 : case GF_SG_FIELD_CODING_DYN:
9367 0 : return 2;
9368 : default:
9369 0 : return 7;
9370 : }
9371 0 : }
9372 :
9373 : static GF_Err ListeningPoint_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
9374 : {
9375 0 : switch(IndexMode) {
9376 : case GF_SG_FIELD_CODING_IN:
9377 0 : *allField = ListeningPoint_In2All[inField];
9378 0 : return GF_OK;
9379 : case GF_SG_FIELD_CODING_DEF:
9380 0 : *allField = ListeningPoint_Def2All[inField];
9381 0 : return GF_OK;
9382 : case GF_SG_FIELD_CODING_OUT:
9383 0 : *allField = ListeningPoint_Out2All[inField];
9384 0 : return GF_OK;
9385 : case GF_SG_FIELD_CODING_DYN:
9386 0 : *allField = ListeningPoint_Dyn2All[inField];
9387 0 : return GF_OK;
9388 : default:
9389 0 : return GF_BAD_PARAM;
9390 : }
9391 0 : }
9392 : static GF_Err ListeningPoint_get_field(GF_Node *node, GF_FieldInfo *info)
9393 : {
9394 0 : switch (info->fieldIndex) {
9395 : case 0:
9396 0 : info->name = "set_bind";
9397 0 : info->eventType = GF_SG_EVENT_IN;
9398 0 : info->on_event_in = ((M_ListeningPoint *)node)->on_set_bind;
9399 0 : info->fieldType = GF_SG_VRML_SFBOOL;
9400 0 : info->far_ptr = & ((M_ListeningPoint *) node)->set_bind;
9401 0 : return GF_OK;
9402 : case 1:
9403 0 : info->name = "jump";
9404 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9405 0 : info->fieldType = GF_SG_VRML_SFBOOL;
9406 0 : info->far_ptr = & ((M_ListeningPoint *) node)->jump;
9407 0 : return GF_OK;
9408 : case 2:
9409 0 : info->name = "orientation";
9410 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9411 0 : info->fieldType = GF_SG_VRML_SFROTATION;
9412 0 : info->far_ptr = & ((M_ListeningPoint *) node)->orientation;
9413 0 : return GF_OK;
9414 : case 3:
9415 0 : info->name = "position";
9416 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9417 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
9418 0 : info->far_ptr = & ((M_ListeningPoint *) node)->position;
9419 0 : return GF_OK;
9420 : case 4:
9421 0 : info->name = "description";
9422 0 : info->eventType = GF_SG_EVENT_FIELD;
9423 0 : info->fieldType = GF_SG_VRML_SFSTRING;
9424 0 : info->far_ptr = & ((M_ListeningPoint *) node)->description;
9425 0 : return GF_OK;
9426 : case 5:
9427 0 : info->name = "bindTime";
9428 0 : info->eventType = GF_SG_EVENT_OUT;
9429 0 : info->fieldType = GF_SG_VRML_SFTIME;
9430 0 : info->far_ptr = & ((M_ListeningPoint *) node)->bindTime;
9431 0 : return GF_OK;
9432 : case 6:
9433 0 : info->name = "isBound";
9434 0 : info->eventType = GF_SG_EVENT_OUT;
9435 0 : info->fieldType = GF_SG_VRML_SFBOOL;
9436 0 : info->far_ptr = & ((M_ListeningPoint *) node)->isBound;
9437 0 : return GF_OK;
9438 : default:
9439 0 : return GF_BAD_PARAM;
9440 : }
9441 0 : }
9442 :
9443 :
9444 : static s32 ListeningPoint_get_field_index_by_name(char *name)
9445 : {
9446 0 : if (!strcmp("set_bind", name)) return 0;
9447 0 : if (!strcmp("jump", name)) return 1;
9448 0 : if (!strcmp("orientation", name)) return 2;
9449 0 : if (!strcmp("position", name)) return 3;
9450 0 : if (!strcmp("description", name)) return 4;
9451 0 : if (!strcmp("bindTime", name)) return 5;
9452 0 : if (!strcmp("isBound", name)) return 6;
9453 0 : return -1;
9454 0 : }
9455 : static Bool ListeningPoint_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
9456 : {
9457 0 : switch (FieldIndex) {
9458 : case 2:
9459 0 : *AType = 10;
9460 0 : *QType = 10;
9461 0 : return 1;
9462 : case 3:
9463 0 : *AType = 1;
9464 0 : *QType = 1;
9465 0 : *b_min = FIX_MIN;
9466 0 : *b_max = FIX_MAX;
9467 0 : return 1;
9468 : default:
9469 0 : return 0;
9470 : }
9471 0 : }
9472 :
9473 :
9474 :
9475 : GF_Node *ListeningPoint_Create()
9476 : {
9477 : M_ListeningPoint *p;
9478 0 : GF_SAFEALLOC(p, M_ListeningPoint);
9479 0 : if(!p) return NULL;
9480 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ListeningPoint);
9481 :
9482 : /*default field values*/
9483 0 : p->jump = 1;
9484 0 : p->orientation.x = FLT2FIX(0);
9485 0 : p->orientation.y = FLT2FIX(0);
9486 0 : p->orientation.z = FLT2FIX(1);
9487 0 : p->orientation.q = FLT2FIX(0);
9488 0 : p->position.x = FLT2FIX(0);
9489 0 : p->position.y = FLT2FIX(0);
9490 0 : p->position.z = FLT2FIX(10);
9491 0 : return (GF_Node *)p;
9492 0 : }
9493 :
9494 :
9495 : /*
9496 : Material Node deletion
9497 : */
9498 :
9499 : static void Material_Del(GF_Node *node)
9500 : {
9501 2838 : M_Material *p = (M_Material *) node;
9502 1419 : gf_node_free((GF_Node *) p);
9503 1419 : }
9504 :
9505 : static const u16 Material_Def2All[] = { 0, 1, 2, 3, 4, 5};
9506 : static const u16 Material_In2All[] = { 0, 1, 2, 3, 4, 5};
9507 : static const u16 Material_Out2All[] = { 0, 1, 2, 3, 4, 5};
9508 : static const u16 Material_Dyn2All[] = { 0, 1, 2, 3, 4, 5};
9509 :
9510 : static u32 Material_get_field_count(GF_Node *node, u8 IndexMode)
9511 : {
9512 2976 : switch(IndexMode) {
9513 : case GF_SG_FIELD_CODING_IN:
9514 207 : return 6;
9515 : case GF_SG_FIELD_CODING_DEF:
9516 621 : return 6;
9517 : case GF_SG_FIELD_CODING_OUT:
9518 0 : return 6;
9519 : case GF_SG_FIELD_CODING_DYN:
9520 0 : return 6;
9521 : default:
9522 660 : return 6;
9523 : }
9524 1488 : }
9525 :
9526 : static GF_Err Material_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
9527 : {
9528 2870 : switch(IndexMode) {
9529 : case GF_SG_FIELD_CODING_IN:
9530 247 : *allField = Material_In2All[inField];
9531 247 : return GF_OK;
9532 : case GF_SG_FIELD_CODING_DEF:
9533 1188 : *allField = Material_Def2All[inField];
9534 1188 : return GF_OK;
9535 : case GF_SG_FIELD_CODING_OUT:
9536 0 : *allField = Material_Out2All[inField];
9537 0 : return GF_OK;
9538 : case GF_SG_FIELD_CODING_DYN:
9539 0 : *allField = Material_Dyn2All[inField];
9540 0 : return GF_OK;
9541 : default:
9542 0 : return GF_BAD_PARAM;
9543 : }
9544 1435 : }
9545 : static GF_Err Material_get_field(GF_Node *node, GF_FieldInfo *info)
9546 : {
9547 21876 : switch (info->fieldIndex) {
9548 : case 0:
9549 1596 : info->name = "ambientIntensity";
9550 1596 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9551 1596 : info->fieldType = GF_SG_VRML_SFFLOAT;
9552 1596 : info->far_ptr = & ((M_Material *) node)->ambientIntensity;
9553 1596 : return GF_OK;
9554 : case 1:
9555 2768 : info->name = "diffuseColor";
9556 2768 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9557 2768 : info->fieldType = GF_SG_VRML_SFCOLOR;
9558 2768 : info->far_ptr = & ((M_Material *) node)->diffuseColor;
9559 2768 : return GF_OK;
9560 : case 2:
9561 1641 : info->name = "emissiveColor";
9562 1641 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9563 1641 : info->fieldType = GF_SG_VRML_SFCOLOR;
9564 1641 : info->far_ptr = & ((M_Material *) node)->emissiveColor;
9565 1641 : return GF_OK;
9566 : case 3:
9567 1671 : info->name = "shininess";
9568 1671 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9569 1671 : info->fieldType = GF_SG_VRML_SFFLOAT;
9570 1671 : info->far_ptr = & ((M_Material *) node)->shininess;
9571 1671 : return GF_OK;
9572 : case 4:
9573 1596 : info->name = "specularColor";
9574 1596 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9575 1596 : info->fieldType = GF_SG_VRML_SFCOLOR;
9576 1596 : info->far_ptr = & ((M_Material *) node)->specularColor;
9577 1596 : return GF_OK;
9578 : case 5:
9579 1666 : info->name = "transparency";
9580 1666 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9581 1666 : info->fieldType = GF_SG_VRML_SFFLOAT;
9582 1666 : info->far_ptr = & ((M_Material *) node)->transparency;
9583 1666 : return GF_OK;
9584 : default:
9585 0 : return GF_BAD_PARAM;
9586 : }
9587 10938 : }
9588 :
9589 :
9590 : static s32 Material_get_field_index_by_name(char *name)
9591 : {
9592 760 : if (!strcmp("ambientIntensity", name)) return 0;
9593 700 : if (!strcmp("diffuseColor", name)) return 1;
9594 72 : if (!strcmp("emissiveColor", name)) return 2;
9595 68 : if (!strcmp("shininess", name)) return 3;
9596 28 : if (!strcmp("specularColor", name)) return 4;
9597 56 : if (!strcmp("transparency", name)) return 5;
9598 0 : return -1;
9599 380 : }
9600 : static Bool Material_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
9601 : {
9602 0 : switch (FieldIndex) {
9603 : case 0:
9604 0 : *AType = 8;
9605 0 : *QType = 4;
9606 0 : *b_min = FLT2FIX(0);
9607 0 : *b_max = FLT2FIX(1);
9608 0 : return 1;
9609 : case 1:
9610 0 : *AType = 4;
9611 0 : *QType = 4;
9612 0 : *b_min = FLT2FIX(0);
9613 0 : *b_max = FLT2FIX(1);
9614 0 : return 1;
9615 : case 2:
9616 0 : *AType = 4;
9617 0 : *QType = 4;
9618 0 : *b_min = FLT2FIX(0);
9619 0 : *b_max = FLT2FIX(1);
9620 0 : return 1;
9621 : case 3:
9622 0 : *AType = 8;
9623 0 : *QType = 4;
9624 0 : *b_min = FLT2FIX(0);
9625 0 : *b_max = FLT2FIX(1);
9626 0 : return 1;
9627 : case 4:
9628 0 : *AType = 4;
9629 0 : *QType = 4;
9630 0 : *b_min = FLT2FIX(0);
9631 0 : *b_max = FLT2FIX(1);
9632 0 : return 1;
9633 : case 5:
9634 0 : *AType = 8;
9635 0 : *QType = 4;
9636 0 : *b_min = FLT2FIX(0);
9637 0 : *b_max = FLT2FIX(1);
9638 0 : return 1;
9639 : default:
9640 0 : return 0;
9641 : }
9642 0 : }
9643 :
9644 :
9645 :
9646 : GF_Node *Material_Create()
9647 : {
9648 : M_Material *p;
9649 4257 : GF_SAFEALLOC(p, M_Material);
9650 1419 : if(!p) return NULL;
9651 1419 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Material);
9652 :
9653 : /*default field values*/
9654 1419 : p->ambientIntensity = FLT2FIX(0.2);
9655 1419 : p->diffuseColor.red = FLT2FIX(0.8);
9656 1419 : p->diffuseColor.green = FLT2FIX(0.8);
9657 1419 : p->diffuseColor.blue = FLT2FIX(0.8);
9658 1419 : p->emissiveColor.red = FLT2FIX(0);
9659 1419 : p->emissiveColor.green = FLT2FIX(0);
9660 1419 : p->emissiveColor.blue = FLT2FIX(0);
9661 1419 : p->shininess = FLT2FIX(0.2);
9662 1419 : p->specularColor.red = FLT2FIX(0);
9663 1419 : p->specularColor.green = FLT2FIX(0);
9664 1419 : p->specularColor.blue = FLT2FIX(0);
9665 1419 : p->transparency = FLT2FIX(0);
9666 1419 : return (GF_Node *)p;
9667 1419 : }
9668 :
9669 :
9670 : /*
9671 : Material2D Node deletion
9672 : */
9673 :
9674 : static void Material2D_Del(GF_Node *node)
9675 : {
9676 34748 : M_Material2D *p = (M_Material2D *) node;
9677 17374 : gf_node_unregister((GF_Node *) p->lineProps, (GF_Node *) p);
9678 17374 : gf_node_free((GF_Node *) p);
9679 17374 : }
9680 :
9681 : static const u16 Material2D_Def2All[] = { 0, 1, 2, 3};
9682 : static const u16 Material2D_In2All[] = { 0, 1, 2, 3};
9683 : static const u16 Material2D_Out2All[] = { 0, 1, 2, 3};
9684 : static const u16 Material2D_Dyn2All[] = { 0, 3};
9685 :
9686 : static u32 Material2D_get_field_count(GF_Node *node, u8 IndexMode)
9687 : {
9688 33724 : switch(IndexMode) {
9689 : case GF_SG_FIELD_CODING_IN:
9690 558 : return 4;
9691 : case GF_SG_FIELD_CODING_DEF:
9692 6182 : return 4;
9693 : case GF_SG_FIELD_CODING_OUT:
9694 18 : return 4;
9695 : case GF_SG_FIELD_CODING_DYN:
9696 0 : return 2;
9697 : default:
9698 10104 : return 4;
9699 : }
9700 16862 : }
9701 :
9702 : static GF_Err Material2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
9703 : {
9704 24884 : switch(IndexMode) {
9705 : case GF_SG_FIELD_CODING_IN:
9706 569 : *allField = Material2D_In2All[inField];
9707 569 : return GF_OK;
9708 : case GF_SG_FIELD_CODING_DEF:
9709 11855 : *allField = Material2D_Def2All[inField];
9710 11855 : return GF_OK;
9711 : case GF_SG_FIELD_CODING_OUT:
9712 18 : *allField = Material2D_Out2All[inField];
9713 18 : return GF_OK;
9714 : case GF_SG_FIELD_CODING_DYN:
9715 0 : *allField = Material2D_Dyn2All[inField];
9716 0 : return GF_OK;
9717 : default:
9718 0 : return GF_BAD_PARAM;
9719 : }
9720 12442 : }
9721 : static GF_Err Material2D_get_field(GF_Node *node, GF_FieldInfo *info)
9722 : {
9723 198888 : switch (info->fieldIndex) {
9724 : case 0:
9725 31752 : info->name = "emissiveColor";
9726 31752 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9727 31752 : info->fieldType = GF_SG_VRML_SFCOLOR;
9728 31752 : info->far_ptr = & ((M_Material2D *) node)->emissiveColor;
9729 31752 : return GF_OK;
9730 : case 1:
9731 31053 : info->name = "filled";
9732 31053 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9733 31053 : info->fieldType = GF_SG_VRML_SFBOOL;
9734 31053 : info->far_ptr = & ((M_Material2D *) node)->filled;
9735 31053 : return GF_OK;
9736 : case 2:
9737 12888 : info->name = "lineProps";
9738 12888 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9739 12888 : info->fieldType = GF_SG_VRML_SFNODE;
9740 12888 : info->NDTtype = NDT_SFLinePropertiesNode;
9741 12888 : info->far_ptr = & ((M_Material2D *)node)->lineProps;
9742 12888 : return GF_OK;
9743 : case 3:
9744 23751 : info->name = "transparency";
9745 23751 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9746 23751 : info->fieldType = GF_SG_VRML_SFFLOAT;
9747 23751 : info->far_ptr = & ((M_Material2D *) node)->transparency;
9748 23751 : return GF_OK;
9749 : default:
9750 0 : return GF_BAD_PARAM;
9751 : }
9752 99444 : }
9753 :
9754 :
9755 : static s32 Material2D_get_field_index_by_name(char *name)
9756 : {
9757 11374 : if (!strcmp("emissiveColor", name)) return 0;
9758 4433 : if (!strcmp("filled", name)) return 1;
9759 729 : if (!strcmp("lineProps", name)) return 2;
9760 314 : if (!strcmp("transparency", name)) return 3;
9761 0 : return -1;
9762 4604 : }
9763 : static Bool Material2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
9764 : {
9765 28 : switch (FieldIndex) {
9766 : case 0:
9767 14 : *AType = 4;
9768 14 : *QType = 4;
9769 14 : *b_min = FLT2FIX(0);
9770 14 : *b_max = FLT2FIX(1);
9771 14 : return 1;
9772 : case 3:
9773 0 : *AType = 8;
9774 0 : *QType = 4;
9775 0 : *b_min = FLT2FIX(0);
9776 0 : *b_max = FLT2FIX(1);
9777 0 : return 1;
9778 : default:
9779 0 : return 0;
9780 : }
9781 14 : }
9782 :
9783 :
9784 :
9785 : GF_Node *Material2D_Create()
9786 : {
9787 : M_Material2D *p;
9788 52122 : GF_SAFEALLOC(p, M_Material2D);
9789 17374 : if(!p) return NULL;
9790 17374 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Material2D);
9791 :
9792 : /*default field values*/
9793 17374 : p->emissiveColor.red = FLT2FIX(0.8);
9794 17374 : p->emissiveColor.green = FLT2FIX(0.8);
9795 17374 : p->emissiveColor.blue = FLT2FIX(0.8);
9796 17374 : p->transparency = FLT2FIX(0);
9797 17374 : return (GF_Node *)p;
9798 17374 : }
9799 :
9800 :
9801 : /*
9802 : MovieTexture Node deletion
9803 : */
9804 :
9805 : static void MovieTexture_Del(GF_Node *node)
9806 : {
9807 1104 : M_MovieTexture *p = (M_MovieTexture *) node;
9808 552 : gf_sg_mfurl_del(p->url);
9809 552 : gf_node_free((GF_Node *) p);
9810 552 : }
9811 :
9812 : static const u16 MovieTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
9813 : static const u16 MovieTexture_In2All[] = { 0, 1, 2, 3, 4};
9814 : static const u16 MovieTexture_Out2All[] = { 0, 1, 2, 3, 4, 7, 8};
9815 : static const u16 MovieTexture_Dyn2All[] = { 1};
9816 :
9817 : static u32 MovieTexture_get_field_count(GF_Node *node, u8 IndexMode)
9818 : {
9819 1104 : switch(IndexMode) {
9820 : case GF_SG_FIELD_CODING_IN:
9821 54 : return 5;
9822 : case GF_SG_FIELD_CODING_DEF:
9823 249 : return 7;
9824 : case GF_SG_FIELD_CODING_OUT:
9825 0 : return 7;
9826 : case GF_SG_FIELD_CODING_DYN:
9827 0 : return 1;
9828 : default:
9829 249 : return 9;
9830 : }
9831 552 : }
9832 :
9833 : static GF_Err MovieTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
9834 : {
9835 1636 : switch(IndexMode) {
9836 : case GF_SG_FIELD_CODING_IN:
9837 84 : *allField = MovieTexture_In2All[inField];
9838 84 : return GF_OK;
9839 : case GF_SG_FIELD_CODING_DEF:
9840 734 : *allField = MovieTexture_Def2All[inField];
9841 734 : return GF_OK;
9842 : case GF_SG_FIELD_CODING_OUT:
9843 0 : *allField = MovieTexture_Out2All[inField];
9844 0 : return GF_OK;
9845 : case GF_SG_FIELD_CODING_DYN:
9846 0 : *allField = MovieTexture_Dyn2All[inField];
9847 0 : return GF_OK;
9848 : default:
9849 0 : return GF_BAD_PARAM;
9850 : }
9851 818 : }
9852 : static GF_Err MovieTexture_get_field(GF_Node *node, GF_FieldInfo *info)
9853 : {
9854 11802 : switch (info->fieldIndex) {
9855 : case 0:
9856 905 : info->name = "loop";
9857 905 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9858 905 : info->fieldType = GF_SG_VRML_SFBOOL;
9859 905 : info->far_ptr = & ((M_MovieTexture *) node)->loop;
9860 905 : return GF_OK;
9861 : case 1:
9862 612 : info->name = "speed";
9863 612 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9864 612 : info->fieldType = GF_SG_VRML_SFFLOAT;
9865 612 : info->far_ptr = & ((M_MovieTexture *) node)->speed;
9866 612 : return GF_OK;
9867 : case 2:
9868 642 : info->name = "startTime";
9869 642 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9870 642 : info->fieldType = GF_SG_VRML_SFTIME;
9871 642 : info->far_ptr = & ((M_MovieTexture *) node)->startTime;
9872 642 : return GF_OK;
9873 : case 3:
9874 719 : info->name = "stopTime";
9875 719 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9876 719 : info->fieldType = GF_SG_VRML_SFTIME;
9877 719 : info->far_ptr = & ((M_MovieTexture *) node)->stopTime;
9878 719 : return GF_OK;
9879 : case 4:
9880 1083 : info->name = "url";
9881 1083 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9882 1083 : info->fieldType = GF_SG_VRML_MFURL;
9883 1083 : info->far_ptr = & ((M_MovieTexture *) node)->url;
9884 1083 : return GF_OK;
9885 : case 5:
9886 721 : info->name = "repeatS";
9887 721 : info->eventType = GF_SG_EVENT_FIELD;
9888 721 : info->fieldType = GF_SG_VRML_SFBOOL;
9889 721 : info->far_ptr = & ((M_MovieTexture *) node)->repeatS;
9890 721 : return GF_OK;
9891 : case 6:
9892 721 : info->name = "repeatT";
9893 721 : info->eventType = GF_SG_EVENT_FIELD;
9894 721 : info->fieldType = GF_SG_VRML_SFBOOL;
9895 721 : info->far_ptr = & ((M_MovieTexture *) node)->repeatT;
9896 721 : return GF_OK;
9897 : case 7:
9898 249 : info->name = "duration_changed";
9899 249 : info->eventType = GF_SG_EVENT_OUT;
9900 249 : info->fieldType = GF_SG_VRML_SFTIME;
9901 249 : info->far_ptr = & ((M_MovieTexture *) node)->duration_changed;
9902 249 : return GF_OK;
9903 : case 8:
9904 249 : info->name = "isActive";
9905 249 : info->eventType = GF_SG_EVENT_OUT;
9906 249 : info->fieldType = GF_SG_VRML_SFBOOL;
9907 249 : info->far_ptr = & ((M_MovieTexture *) node)->isActive;
9908 249 : return GF_OK;
9909 : default:
9910 0 : return GF_BAD_PARAM;
9911 : }
9912 5901 : }
9913 :
9914 :
9915 : static s32 MovieTexture_get_field_index_by_name(char *name)
9916 : {
9917 694 : if (!strcmp("loop", name)) return 0;
9918 224 : if (!strcmp("speed", name)) return 1;
9919 232 : if (!strcmp("startTime", name)) return 2;
9920 245 : if (!strcmp("stopTime", name)) return 3;
9921 314 : if (!strcmp("url", name)) return 4;
9922 90 : if (!strcmp("repeatS", name)) return 5;
9923 60 : if (!strcmp("repeatT", name)) return 6;
9924 0 : if (!strcmp("duration_changed", name)) return 7;
9925 0 : if (!strcmp("isActive", name)) return 8;
9926 0 : return -1;
9927 306 : }
9928 : static Bool MovieTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
9929 : {
9930 0 : switch (FieldIndex) {
9931 : case 1:
9932 0 : *AType = 7;
9933 0 : *QType = 0;
9934 0 : *b_min = FIX_MIN;
9935 0 : *b_max = FIX_MAX;
9936 0 : return 1;
9937 : default:
9938 0 : return 0;
9939 : }
9940 0 : }
9941 :
9942 :
9943 :
9944 : GF_Node *MovieTexture_Create()
9945 : {
9946 : M_MovieTexture *p;
9947 1656 : GF_SAFEALLOC(p, M_MovieTexture);
9948 552 : if(!p) return NULL;
9949 552 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MovieTexture);
9950 :
9951 : /*default field values*/
9952 552 : p->speed = FLT2FIX(1.0);
9953 552 : p->startTime = 0;
9954 552 : p->stopTime = 0;
9955 552 : p->repeatS = 1;
9956 552 : p->repeatT = 1;
9957 552 : return (GF_Node *)p;
9958 552 : }
9959 :
9960 :
9961 : /*
9962 : NavigationInfo Node deletion
9963 : */
9964 :
9965 : static void NavigationInfo_Del(GF_Node *node)
9966 : {
9967 520 : M_NavigationInfo *p = (M_NavigationInfo *) node;
9968 260 : gf_sg_mffloat_del(p->avatarSize);
9969 260 : gf_sg_mfstring_del(p->type);
9970 260 : gf_node_free((GF_Node *) p);
9971 260 : }
9972 :
9973 : static const u16 NavigationInfo_Def2All[] = { 1, 2, 3, 4, 5};
9974 : static const u16 NavigationInfo_In2All[] = { 0, 1, 2, 3, 4, 5};
9975 : static const u16 NavigationInfo_Out2All[] = { 1, 2, 3, 4, 5, 6};
9976 : static const u16 NavigationInfo_Dyn2All[] = { 5};
9977 :
9978 : static u32 NavigationInfo_get_field_count(GF_Node *node, u8 IndexMode)
9979 : {
9980 460 : switch(IndexMode) {
9981 : case GF_SG_FIELD_CODING_IN:
9982 0 : return 6;
9983 : case GF_SG_FIELD_CODING_DEF:
9984 126 : return 5;
9985 : case GF_SG_FIELD_CODING_OUT:
9986 0 : return 6;
9987 : case GF_SG_FIELD_CODING_DYN:
9988 0 : return 1;
9989 : default:
9990 104 : return 7;
9991 : }
9992 230 : }
9993 :
9994 : static GF_Err NavigationInfo_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
9995 : {
9996 460 : switch(IndexMode) {
9997 : case GF_SG_FIELD_CODING_IN:
9998 0 : *allField = NavigationInfo_In2All[inField];
9999 0 : return GF_OK;
10000 : case GF_SG_FIELD_CODING_DEF:
10001 230 : *allField = NavigationInfo_Def2All[inField];
10002 230 : return GF_OK;
10003 : case GF_SG_FIELD_CODING_OUT:
10004 0 : *allField = NavigationInfo_Out2All[inField];
10005 0 : return GF_OK;
10006 : case GF_SG_FIELD_CODING_DYN:
10007 0 : *allField = NavigationInfo_Dyn2All[inField];
10008 0 : return GF_OK;
10009 : default:
10010 0 : return GF_BAD_PARAM;
10011 : }
10012 230 : }
10013 : static GF_Err NavigationInfo_get_field(GF_Node *node, GF_FieldInfo *info)
10014 : {
10015 3596 : switch (info->fieldIndex) {
10016 : case 0:
10017 104 : info->name = "set_bind";
10018 104 : info->eventType = GF_SG_EVENT_IN;
10019 104 : info->on_event_in = ((M_NavigationInfo *)node)->on_set_bind;
10020 104 : info->fieldType = GF_SG_VRML_SFBOOL;
10021 104 : info->far_ptr = & ((M_NavigationInfo *) node)->set_bind;
10022 104 : return GF_OK;
10023 : case 1:
10024 279 : info->name = "avatarSize";
10025 279 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10026 279 : info->fieldType = GF_SG_VRML_MFFLOAT;
10027 279 : info->far_ptr = & ((M_NavigationInfo *) node)->avatarSize;
10028 279 : return GF_OK;
10029 : case 2:
10030 339 : info->name = "headlight";
10031 339 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10032 339 : info->fieldType = GF_SG_VRML_SFBOOL;
10033 339 : info->far_ptr = & ((M_NavigationInfo *) node)->headlight;
10034 339 : return GF_OK;
10035 : case 3:
10036 264 : info->name = "speed";
10037 264 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10038 264 : info->fieldType = GF_SG_VRML_SFFLOAT;
10039 264 : info->far_ptr = & ((M_NavigationInfo *) node)->speed;
10040 264 : return GF_OK;
10041 : case 4:
10042 444 : info->name = "type";
10043 444 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10044 444 : info->fieldType = GF_SG_VRML_MFSTRING;
10045 444 : info->far_ptr = & ((M_NavigationInfo *) node)->type;
10046 444 : return GF_OK;
10047 : case 5:
10048 264 : info->name = "visibilityLimit";
10049 264 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10050 264 : info->fieldType = GF_SG_VRML_SFFLOAT;
10051 264 : info->far_ptr = & ((M_NavigationInfo *) node)->visibilityLimit;
10052 264 : return GF_OK;
10053 : case 6:
10054 104 : info->name = "isBound";
10055 104 : info->eventType = GF_SG_EVENT_OUT;
10056 104 : info->fieldType = GF_SG_VRML_SFBOOL;
10057 104 : info->far_ptr = & ((M_NavigationInfo *) node)->isBound;
10058 104 : return GF_OK;
10059 : default:
10060 0 : return GF_BAD_PARAM;
10061 : }
10062 1798 : }
10063 :
10064 :
10065 : static s32 NavigationInfo_get_field_index_by_name(char *name)
10066 : {
10067 144 : if (!strcmp("set_bind", name)) return 0;
10068 76 : if (!strcmp("avatarSize", name)) return 1;
10069 88 : if (!strcmp("headlight", name)) return 2;
10070 48 : if (!strcmp("speed", name)) return 3;
10071 96 : if (!strcmp("type", name)) return 4;
10072 0 : if (!strcmp("visibilityLimit", name)) return 5;
10073 0 : if (!strcmp("isBound", name)) return 6;
10074 0 : return -1;
10075 72 : }
10076 : static Bool NavigationInfo_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10077 : {
10078 0 : switch (FieldIndex) {
10079 : case 1:
10080 0 : *AType = 0;
10081 0 : *QType = 11;
10082 0 : *b_min = FLT2FIX(0);
10083 0 : *b_max = FIX_MAX;
10084 0 : return 1;
10085 : case 3:
10086 0 : *AType = 0;
10087 0 : *QType = 0;
10088 0 : *b_min = FLT2FIX(0);
10089 0 : *b_max = FIX_MAX;
10090 0 : return 1;
10091 : case 5:
10092 0 : *AType = 7;
10093 0 : *QType = 11;
10094 0 : *b_min = FLT2FIX(0);
10095 0 : *b_max = FIX_MAX;
10096 0 : return 1;
10097 : default:
10098 0 : return 0;
10099 : }
10100 0 : }
10101 :
10102 :
10103 :
10104 : GF_Node *NavigationInfo_Create()
10105 : {
10106 : M_NavigationInfo *p;
10107 780 : GF_SAFEALLOC(p, M_NavigationInfo);
10108 260 : if(!p) return NULL;
10109 260 : gf_node_setup((GF_Node *)p, TAG_MPEG4_NavigationInfo);
10110 :
10111 : /*default field values*/
10112 260 : p->avatarSize.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*3);
10113 260 : p->avatarSize.count = 3;
10114 260 : p->avatarSize.vals[0] = FLT2FIX(0.25);
10115 260 : p->avatarSize.vals[1] = FLT2FIX(1.6);
10116 260 : p->avatarSize.vals[2] = FLT2FIX(0.75);
10117 260 : p->headlight = 1;
10118 260 : p->speed = FLT2FIX(1.0);
10119 260 : p->type.vals = (char**)gf_malloc(sizeof(SFString)*2);
10120 260 : p->type.count = 2;
10121 260 : p->type.vals[0] = (char*)gf_malloc(sizeof(char) * 5);
10122 260 : strcpy(p->type.vals[0], "WALK");
10123 260 : p->type.vals[1] = (char*)gf_malloc(sizeof(char) * 4);
10124 260 : strcpy(p->type.vals[1], "ANY");
10125 260 : p->visibilityLimit = FLT2FIX(0.0);
10126 260 : return (GF_Node *)p;
10127 260 : }
10128 :
10129 :
10130 : /*
10131 : Normal Node deletion
10132 : */
10133 :
10134 : static void Normal_Del(GF_Node *node)
10135 : {
10136 0 : M_Normal *p = (M_Normal *) node;
10137 0 : gf_sg_mfvec3f_del(p->vector);
10138 0 : gf_node_free((GF_Node *) p);
10139 0 : }
10140 :
10141 : static const u16 Normal_Def2All[] = { 0};
10142 : static const u16 Normal_In2All[] = { 0};
10143 : static const u16 Normal_Out2All[] = { 0};
10144 : static const u16 Normal_Dyn2All[] = { 0};
10145 :
10146 : static u32 Normal_get_field_count(GF_Node *node, u8 IndexMode)
10147 : {
10148 0 : switch(IndexMode) {
10149 : case GF_SG_FIELD_CODING_IN:
10150 0 : return 1;
10151 : case GF_SG_FIELD_CODING_DEF:
10152 0 : return 1;
10153 : case GF_SG_FIELD_CODING_OUT:
10154 0 : return 1;
10155 : case GF_SG_FIELD_CODING_DYN:
10156 0 : return 1;
10157 : default:
10158 0 : return 1;
10159 : }
10160 0 : }
10161 :
10162 : static GF_Err Normal_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
10163 : {
10164 0 : switch(IndexMode) {
10165 : case GF_SG_FIELD_CODING_IN:
10166 0 : *allField = Normal_In2All[inField];
10167 0 : return GF_OK;
10168 : case GF_SG_FIELD_CODING_DEF:
10169 0 : *allField = Normal_Def2All[inField];
10170 0 : return GF_OK;
10171 : case GF_SG_FIELD_CODING_OUT:
10172 0 : *allField = Normal_Out2All[inField];
10173 0 : return GF_OK;
10174 : case GF_SG_FIELD_CODING_DYN:
10175 0 : *allField = Normal_Dyn2All[inField];
10176 0 : return GF_OK;
10177 : default:
10178 0 : return GF_BAD_PARAM;
10179 : }
10180 0 : }
10181 : static GF_Err Normal_get_field(GF_Node *node, GF_FieldInfo *info)
10182 : {
10183 0 : switch (info->fieldIndex) {
10184 : case 0:
10185 0 : info->name = "vector";
10186 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10187 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
10188 0 : info->far_ptr = & ((M_Normal *) node)->vector;
10189 0 : return GF_OK;
10190 : default:
10191 0 : return GF_BAD_PARAM;
10192 : }
10193 0 : }
10194 :
10195 :
10196 : static s32 Normal_get_field_index_by_name(char *name)
10197 : {
10198 0 : if (!strcmp("vector", name)) return 0;
10199 0 : return -1;
10200 0 : }
10201 : static Bool Normal_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10202 : {
10203 0 : switch (FieldIndex) {
10204 : case 0:
10205 0 : *AType = 9;
10206 0 : *QType = 9;
10207 0 : return 1;
10208 : default:
10209 0 : return 0;
10210 : }
10211 0 : }
10212 :
10213 :
10214 :
10215 : GF_Node *Normal_Create()
10216 : {
10217 : M_Normal *p;
10218 0 : GF_SAFEALLOC(p, M_Normal);
10219 0 : if(!p) return NULL;
10220 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Normal);
10221 :
10222 : /*default field values*/
10223 0 : return (GF_Node *)p;
10224 0 : }
10225 :
10226 :
10227 : /*
10228 : NormalInterpolator Node deletion
10229 : */
10230 :
10231 : static void NormalInterpolator_Del(GF_Node *node)
10232 : {
10233 0 : M_NormalInterpolator *p = (M_NormalInterpolator *) node;
10234 0 : gf_sg_mffloat_del(p->key);
10235 0 : gf_sg_mfvec3f_del(p->keyValue);
10236 0 : gf_sg_mfvec3f_del(p->value_changed);
10237 0 : gf_node_free((GF_Node *) p);
10238 0 : }
10239 :
10240 : static const u16 NormalInterpolator_Def2All[] = { 1, 2};
10241 : static const u16 NormalInterpolator_In2All[] = { 0, 1, 2};
10242 : static const u16 NormalInterpolator_Out2All[] = { 1, 2, 3};
10243 :
10244 : static u32 NormalInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
10245 : {
10246 0 : switch(IndexMode) {
10247 : case GF_SG_FIELD_CODING_IN:
10248 0 : return 3;
10249 : case GF_SG_FIELD_CODING_DEF:
10250 0 : return 2;
10251 : case GF_SG_FIELD_CODING_OUT:
10252 0 : return 3;
10253 : case GF_SG_FIELD_CODING_DYN:
10254 0 : return 0;
10255 : default:
10256 0 : return 4;
10257 : }
10258 0 : }
10259 :
10260 : static GF_Err NormalInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
10261 : {
10262 0 : switch(IndexMode) {
10263 : case GF_SG_FIELD_CODING_IN:
10264 0 : *allField = NormalInterpolator_In2All[inField];
10265 0 : return GF_OK;
10266 : case GF_SG_FIELD_CODING_DEF:
10267 0 : *allField = NormalInterpolator_Def2All[inField];
10268 0 : return GF_OK;
10269 : case GF_SG_FIELD_CODING_OUT:
10270 0 : *allField = NormalInterpolator_Out2All[inField];
10271 0 : return GF_OK;
10272 : default:
10273 0 : return GF_BAD_PARAM;
10274 : }
10275 0 : }
10276 : static GF_Err NormalInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
10277 : {
10278 0 : switch (info->fieldIndex) {
10279 : case 0:
10280 0 : info->name = "set_fraction";
10281 0 : info->eventType = GF_SG_EVENT_IN;
10282 0 : info->on_event_in = ((M_NormalInterpolator *)node)->on_set_fraction;
10283 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
10284 0 : info->far_ptr = & ((M_NormalInterpolator *) node)->set_fraction;
10285 0 : return GF_OK;
10286 : case 1:
10287 0 : info->name = "key";
10288 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10289 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
10290 0 : info->far_ptr = & ((M_NormalInterpolator *) node)->key;
10291 0 : return GF_OK;
10292 : case 2:
10293 0 : info->name = "keyValue";
10294 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10295 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
10296 0 : info->far_ptr = & ((M_NormalInterpolator *) node)->keyValue;
10297 0 : return GF_OK;
10298 : case 3:
10299 0 : info->name = "value_changed";
10300 0 : info->eventType = GF_SG_EVENT_OUT;
10301 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
10302 0 : info->far_ptr = & ((M_NormalInterpolator *) node)->value_changed;
10303 0 : return GF_OK;
10304 : default:
10305 0 : return GF_BAD_PARAM;
10306 : }
10307 0 : }
10308 :
10309 :
10310 : static s32 NormalInterpolator_get_field_index_by_name(char *name)
10311 : {
10312 0 : if (!strcmp("set_fraction", name)) return 0;
10313 0 : if (!strcmp("key", name)) return 1;
10314 0 : if (!strcmp("keyValue", name)) return 2;
10315 0 : if (!strcmp("value_changed", name)) return 3;
10316 0 : return -1;
10317 0 : }
10318 : static Bool NormalInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10319 : {
10320 0 : switch (FieldIndex) {
10321 : case 1:
10322 0 : *AType = 0;
10323 0 : *QType = 8;
10324 0 : *b_min = FLT2FIX(0);
10325 0 : *b_max = FLT2FIX(1);
10326 0 : return 1;
10327 : case 2:
10328 0 : *AType = 0;
10329 0 : *QType = 9;
10330 0 : *b_min = FIX_MIN;
10331 0 : *b_max = FIX_MAX;
10332 0 : return 1;
10333 : default:
10334 0 : return 0;
10335 : }
10336 0 : }
10337 :
10338 :
10339 :
10340 : GF_Node *NormalInterpolator_Create()
10341 : {
10342 : M_NormalInterpolator *p;
10343 0 : GF_SAFEALLOC(p, M_NormalInterpolator);
10344 0 : if(!p) return NULL;
10345 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_NormalInterpolator);
10346 :
10347 : /*default field values*/
10348 0 : return (GF_Node *)p;
10349 0 : }
10350 :
10351 :
10352 : /*
10353 : OrderedGroup Node deletion
10354 : */
10355 :
10356 : static void OrderedGroup_Del(GF_Node *node)
10357 : {
10358 9508 : M_OrderedGroup *p = (M_OrderedGroup *) node;
10359 4754 : gf_sg_mffloat_del(p->order);
10360 4754 : gf_sg_vrml_parent_destroy((GF_Node *) p);
10361 4754 : gf_node_free((GF_Node *) p);
10362 4754 : }
10363 :
10364 : static const u16 OrderedGroup_Def2All[] = { 2, 3};
10365 : static const u16 OrderedGroup_In2All[] = { 0, 1, 2, 3};
10366 : static const u16 OrderedGroup_Out2All[] = { 2, 3};
10367 :
10368 : static u32 OrderedGroup_get_field_count(GF_Node *node, u8 IndexMode)
10369 : {
10370 8562 : switch(IndexMode) {
10371 : case GF_SG_FIELD_CODING_IN:
10372 18 : return 4;
10373 : case GF_SG_FIELD_CODING_DEF:
10374 2450 : return 2;
10375 : case GF_SG_FIELD_CODING_OUT:
10376 0 : return 2;
10377 : case GF_SG_FIELD_CODING_DYN:
10378 0 : return 0;
10379 : default:
10380 1813 : return 4;
10381 : }
10382 4281 : }
10383 :
10384 : static GF_Err OrderedGroup_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
10385 : {
10386 4972 : switch(IndexMode) {
10387 : case GF_SG_FIELD_CODING_IN:
10388 26 : *allField = OrderedGroup_In2All[inField];
10389 26 : return GF_OK;
10390 : case GF_SG_FIELD_CODING_DEF:
10391 2460 : *allField = OrderedGroup_Def2All[inField];
10392 2460 : return GF_OK;
10393 : case GF_SG_FIELD_CODING_OUT:
10394 0 : *allField = OrderedGroup_Out2All[inField];
10395 0 : return GF_OK;
10396 : default:
10397 0 : return GF_BAD_PARAM;
10398 : }
10399 2486 : }
10400 : static GF_Err OrderedGroup_get_field(GF_Node *node, GF_FieldInfo *info)
10401 : {
10402 29590 : switch (info->fieldIndex) {
10403 : case 0:
10404 1813 : info->name = "addChildren";
10405 1813 : info->eventType = GF_SG_EVENT_IN;
10406 1813 : info->on_event_in = ((M_OrderedGroup *)node)->on_addChildren;
10407 1813 : info->fieldType = GF_SG_VRML_MFNODE;
10408 1813 : info->NDTtype = NDT_SF3DNode;
10409 1813 : info->far_ptr = & ((M_OrderedGroup *)node)->addChildren;
10410 1813 : return GF_OK;
10411 : case 1:
10412 1813 : info->name = "removeChildren";
10413 1813 : info->eventType = GF_SG_EVENT_IN;
10414 1813 : info->on_event_in = ((M_OrderedGroup *)node)->on_removeChildren;
10415 1813 : info->fieldType = GF_SG_VRML_MFNODE;
10416 1813 : info->NDTtype = NDT_SF3DNode;
10417 1813 : info->far_ptr = & ((M_OrderedGroup *)node)->removeChildren;
10418 1813 : return GF_OK;
10419 : case 2:
10420 6277 : info->name = "children";
10421 6277 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10422 6277 : info->fieldType = GF_SG_VRML_MFNODE;
10423 6277 : info->NDTtype = NDT_SF3DNode;
10424 6277 : info->far_ptr = & ((M_OrderedGroup *)node)->children;
10425 6277 : return GF_OK;
10426 : case 3:
10427 4892 : info->name = "order";
10428 4892 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10429 4892 : info->fieldType = GF_SG_VRML_MFFLOAT;
10430 4892 : info->far_ptr = & ((M_OrderedGroup *) node)->order;
10431 4892 : return GF_OK;
10432 : default:
10433 0 : return GF_BAD_PARAM;
10434 : }
10435 14795 : }
10436 :
10437 :
10438 : static s32 OrderedGroup_get_field_index_by_name(char *name)
10439 : {
10440 2086 : if (!strcmp("addChildren", name)) return 0;
10441 1043 : if (!strcmp("removeChildren", name)) return 1;
10442 2069 : if (!strcmp("children", name)) return 2;
10443 33 : if (!strcmp("order", name)) return 3;
10444 1 : return -1;
10445 1043 : }
10446 : static Bool OrderedGroup_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10447 : {
10448 0 : switch (FieldIndex) {
10449 : case 3:
10450 0 : *AType = 0;
10451 0 : *QType = 3;
10452 0 : *b_min = FLT2FIX(0);
10453 0 : *b_max = FIX_MAX;
10454 0 : return 1;
10455 : default:
10456 0 : return 0;
10457 : }
10458 0 : }
10459 :
10460 :
10461 :
10462 : GF_Node *OrderedGroup_Create()
10463 : {
10464 : M_OrderedGroup *p;
10465 14262 : GF_SAFEALLOC(p, M_OrderedGroup);
10466 4754 : if(!p) return NULL;
10467 4754 : gf_node_setup((GF_Node *)p, TAG_MPEG4_OrderedGroup);
10468 4754 : gf_sg_vrml_parent_setup((GF_Node *) p);
10469 :
10470 : /*default field values*/
10471 4754 : return (GF_Node *)p;
10472 4754 : }
10473 :
10474 :
10475 : /*
10476 : OrientationInterpolator Node deletion
10477 : */
10478 :
10479 : static void OrientationInterpolator_Del(GF_Node *node)
10480 : {
10481 578 : M_OrientationInterpolator *p = (M_OrientationInterpolator *) node;
10482 289 : gf_sg_mffloat_del(p->key);
10483 289 : gf_sg_mfrotation_del(p->keyValue);
10484 289 : gf_node_free((GF_Node *) p);
10485 289 : }
10486 :
10487 : static const u16 OrientationInterpolator_Def2All[] = { 1, 2};
10488 : static const u16 OrientationInterpolator_In2All[] = { 0, 1, 2};
10489 : static const u16 OrientationInterpolator_Out2All[] = { 1, 2, 3};
10490 :
10491 : static u32 OrientationInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
10492 : {
10493 1108 : switch(IndexMode) {
10494 : case GF_SG_FIELD_CODING_IN:
10495 144 : return 3;
10496 : case GF_SG_FIELD_CODING_DEF:
10497 144 : return 2;
10498 : case GF_SG_FIELD_CODING_OUT:
10499 153 : return 3;
10500 : case GF_SG_FIELD_CODING_DYN:
10501 0 : return 0;
10502 : default:
10503 113 : return 4;
10504 : }
10505 554 : }
10506 :
10507 : static GF_Err OrientationInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
10508 : {
10509 1046 : switch(IndexMode) {
10510 : case GF_SG_FIELD_CODING_IN:
10511 112 : *allField = OrientationInterpolator_In2All[inField];
10512 112 : return GF_OK;
10513 : case GF_SG_FIELD_CODING_DEF:
10514 224 : *allField = OrientationInterpolator_Def2All[inField];
10515 224 : return GF_OK;
10516 : case GF_SG_FIELD_CODING_OUT:
10517 187 : *allField = OrientationInterpolator_Out2All[inField];
10518 187 : return GF_OK;
10519 : default:
10520 0 : return GF_BAD_PARAM;
10521 : }
10522 523 : }
10523 : static GF_Err OrientationInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
10524 : {
10525 3100 : switch (info->fieldIndex) {
10526 : case 0:
10527 241 : info->name = "set_fraction";
10528 241 : info->eventType = GF_SG_EVENT_IN;
10529 241 : info->on_event_in = ((M_OrientationInterpolator *)node)->on_set_fraction;
10530 241 : info->fieldType = GF_SG_VRML_SFFLOAT;
10531 241 : info->far_ptr = & ((M_OrientationInterpolator *) node)->set_fraction;
10532 241 : return GF_OK;
10533 : case 1:
10534 530 : info->name = "key";
10535 530 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10536 530 : info->fieldType = GF_SG_VRML_MFFLOAT;
10537 530 : info->far_ptr = & ((M_OrientationInterpolator *) node)->key;
10538 530 : return GF_OK;
10539 : case 2:
10540 530 : info->name = "keyValue";
10541 530 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10542 530 : info->fieldType = GF_SG_VRML_MFROTATION;
10543 530 : info->far_ptr = & ((M_OrientationInterpolator *) node)->keyValue;
10544 530 : return GF_OK;
10545 : case 3:
10546 249 : info->name = "value_changed";
10547 249 : info->eventType = GF_SG_EVENT_OUT;
10548 249 : info->fieldType = GF_SG_VRML_SFROTATION;
10549 249 : info->far_ptr = & ((M_OrientationInterpolator *) node)->value_changed;
10550 249 : return GF_OK;
10551 : default:
10552 0 : return GF_BAD_PARAM;
10553 : }
10554 1550 : }
10555 :
10556 :
10557 : static s32 OrientationInterpolator_get_field_index_by_name(char *name)
10558 : {
10559 584 : if (!strcmp("set_fraction", name)) return 0;
10560 260 : if (!strcmp("key", name)) return 1;
10561 196 : if (!strcmp("keyValue", name)) return 2;
10562 136 : if (!strcmp("value_changed", name)) return 3;
10563 0 : return -1;
10564 260 : }
10565 : static Bool OrientationInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10566 : {
10567 0 : switch (FieldIndex) {
10568 : case 1:
10569 0 : *AType = 0;
10570 0 : *QType = 8;
10571 0 : *b_min = FLT2FIX(0);
10572 0 : *b_max = FLT2FIX(1);
10573 0 : return 1;
10574 : case 2:
10575 0 : *AType = 0;
10576 0 : *QType = 10;
10577 0 : *b_min = FIX_MIN;
10578 0 : *b_max = FIX_MAX;
10579 0 : return 1;
10580 : default:
10581 0 : return 0;
10582 : }
10583 0 : }
10584 :
10585 :
10586 :
10587 : GF_Node *OrientationInterpolator_Create()
10588 : {
10589 : M_OrientationInterpolator *p;
10590 867 : GF_SAFEALLOC(p, M_OrientationInterpolator);
10591 289 : if(!p) return NULL;
10592 289 : gf_node_setup((GF_Node *)p, TAG_MPEG4_OrientationInterpolator);
10593 :
10594 : /*default field values*/
10595 289 : return (GF_Node *)p;
10596 289 : }
10597 :
10598 :
10599 : /*
10600 : PixelTexture Node deletion
10601 : */
10602 :
10603 : static void PixelTexture_Del(GF_Node *node)
10604 : {
10605 144 : M_PixelTexture *p = (M_PixelTexture *) node;
10606 72 : gf_sg_sfimage_del(p->image);
10607 72 : gf_node_free((GF_Node *) p);
10608 72 : }
10609 :
10610 : static const u16 PixelTexture_Def2All[] = { 0, 1, 2};
10611 : static const u16 PixelTexture_In2All[] = { 0};
10612 : static const u16 PixelTexture_Out2All[] = { 0};
10613 :
10614 : static u32 PixelTexture_get_field_count(GF_Node *node, u8 IndexMode)
10615 : {
10616 128 : switch(IndexMode) {
10617 : case GF_SG_FIELD_CODING_IN:
10618 0 : return 1;
10619 : case GF_SG_FIELD_CODING_DEF:
10620 36 : return 3;
10621 : case GF_SG_FIELD_CODING_OUT:
10622 0 : return 1;
10623 : case GF_SG_FIELD_CODING_DYN:
10624 0 : return 0;
10625 : default:
10626 28 : return 3;
10627 : }
10628 64 : }
10629 :
10630 : static GF_Err PixelTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
10631 : {
10632 88 : switch(IndexMode) {
10633 : case GF_SG_FIELD_CODING_IN:
10634 0 : *allField = PixelTexture_In2All[inField];
10635 0 : return GF_OK;
10636 : case GF_SG_FIELD_CODING_DEF:
10637 44 : *allField = PixelTexture_Def2All[inField];
10638 44 : return GF_OK;
10639 : case GF_SG_FIELD_CODING_OUT:
10640 0 : *allField = PixelTexture_Out2All[inField];
10641 0 : return GF_OK;
10642 : default:
10643 0 : return GF_BAD_PARAM;
10644 : }
10645 44 : }
10646 : static GF_Err PixelTexture_get_field(GF_Node *node, GF_FieldInfo *info)
10647 : {
10648 552 : switch (info->fieldIndex) {
10649 : case 0:
10650 132 : info->name = "image";
10651 132 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10652 132 : info->fieldType = GF_SG_VRML_SFIMAGE;
10653 132 : info->far_ptr = & ((M_PixelTexture *) node)->image;
10654 132 : return GF_OK;
10655 : case 1:
10656 72 : info->name = "repeatS";
10657 72 : info->eventType = GF_SG_EVENT_FIELD;
10658 72 : info->fieldType = GF_SG_VRML_SFBOOL;
10659 72 : info->far_ptr = & ((M_PixelTexture *) node)->repeatS;
10660 72 : return GF_OK;
10661 : case 2:
10662 72 : info->name = "repeatT";
10663 72 : info->eventType = GF_SG_EVENT_FIELD;
10664 72 : info->fieldType = GF_SG_VRML_SFBOOL;
10665 72 : info->far_ptr = & ((M_PixelTexture *) node)->repeatT;
10666 72 : return GF_OK;
10667 : default:
10668 0 : return GF_BAD_PARAM;
10669 : }
10670 276 : }
10671 :
10672 :
10673 : static s32 PixelTexture_get_field_index_by_name(char *name)
10674 : {
10675 48 : if (!strcmp("image", name)) return 0;
10676 0 : if (!strcmp("repeatS", name)) return 1;
10677 0 : if (!strcmp("repeatT", name)) return 2;
10678 0 : return -1;
10679 16 : }
10680 : static Bool PixelTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10681 : {
10682 0 : switch (FieldIndex) {
10683 : case 0:
10684 0 : *AType = 0;
10685 0 : *QType = 0;
10686 0 : return 1;
10687 : default:
10688 0 : return 0;
10689 : }
10690 0 : }
10691 :
10692 :
10693 :
10694 : GF_Node *PixelTexture_Create()
10695 : {
10696 : M_PixelTexture *p;
10697 216 : GF_SAFEALLOC(p, M_PixelTexture);
10698 72 : if(!p) return NULL;
10699 72 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PixelTexture);
10700 :
10701 : /*default field values*/
10702 72 : p->repeatS = 1;
10703 72 : p->repeatT = 1;
10704 72 : return (GF_Node *)p;
10705 72 : }
10706 :
10707 :
10708 : /*
10709 : PlaneSensor Node deletion
10710 : */
10711 :
10712 : static void PlaneSensor_Del(GF_Node *node)
10713 : {
10714 36 : M_PlaneSensor *p = (M_PlaneSensor *) node;
10715 18 : gf_node_free((GF_Node *) p);
10716 18 : }
10717 :
10718 : static const u16 PlaneSensor_Def2All[] = { 0, 1, 2, 3, 4};
10719 : static const u16 PlaneSensor_In2All[] = { 0, 1, 2, 3, 4};
10720 : static const u16 PlaneSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
10721 :
10722 : static u32 PlaneSensor_get_field_count(GF_Node *node, u8 IndexMode)
10723 : {
10724 104 : switch(IndexMode) {
10725 : case GF_SG_FIELD_CODING_IN:
10726 0 : return 5;
10727 : case GF_SG_FIELD_CODING_DEF:
10728 9 : return 5;
10729 : case GF_SG_FIELD_CODING_OUT:
10730 36 : return 8;
10731 : case GF_SG_FIELD_CODING_DYN:
10732 0 : return 0;
10733 : default:
10734 7 : return 8;
10735 : }
10736 52 : }
10737 :
10738 : static GF_Err PlaneSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
10739 : {
10740 198 : switch(IndexMode) {
10741 : case GF_SG_FIELD_CODING_IN:
10742 0 : *allField = PlaneSensor_In2All[inField];
10743 0 : return GF_OK;
10744 : case GF_SG_FIELD_CODING_DEF:
10745 25 : *allField = PlaneSensor_Def2All[inField];
10746 25 : return GF_OK;
10747 : case GF_SG_FIELD_CODING_OUT:
10748 74 : *allField = PlaneSensor_Out2All[inField];
10749 74 : return GF_OK;
10750 : default:
10751 0 : return GF_BAD_PARAM;
10752 : }
10753 99 : }
10754 : static GF_Err PlaneSensor_get_field(GF_Node *node, GF_FieldInfo *info)
10755 : {
10756 376 : switch (info->fieldIndex) {
10757 : case 0:
10758 18 : info->name = "autoOffset";
10759 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10760 18 : info->fieldType = GF_SG_VRML_SFBOOL;
10761 18 : info->far_ptr = & ((M_PlaneSensor *) node)->autoOffset;
10762 18 : return GF_OK;
10763 : case 1:
10764 18 : info->name = "enabled";
10765 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10766 18 : info->fieldType = GF_SG_VRML_SFBOOL;
10767 18 : info->far_ptr = & ((M_PlaneSensor *) node)->enabled;
10768 18 : return GF_OK;
10769 : case 2:
10770 33 : info->name = "maxPosition";
10771 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10772 33 : info->fieldType = GF_SG_VRML_SFVEC2F;
10773 33 : info->far_ptr = & ((M_PlaneSensor *) node)->maxPosition;
10774 33 : return GF_OK;
10775 : case 3:
10776 33 : info->name = "minPosition";
10777 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10778 33 : info->fieldType = GF_SG_VRML_SFVEC2F;
10779 33 : info->far_ptr = & ((M_PlaneSensor *) node)->minPosition;
10780 33 : return GF_OK;
10781 : case 4:
10782 33 : info->name = "offset";
10783 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10784 33 : info->fieldType = GF_SG_VRML_SFVEC3F;
10785 33 : info->far_ptr = & ((M_PlaneSensor *) node)->offset;
10786 33 : return GF_OK;
10787 : case 5:
10788 23 : info->name = "isActive";
10789 23 : info->eventType = GF_SG_EVENT_OUT;
10790 23 : info->fieldType = GF_SG_VRML_SFBOOL;
10791 23 : info->far_ptr = & ((M_PlaneSensor *) node)->isActive;
10792 23 : return GF_OK;
10793 : case 6:
10794 15 : info->name = "trackPoint_changed";
10795 15 : info->eventType = GF_SG_EVENT_OUT;
10796 15 : info->fieldType = GF_SG_VRML_SFVEC3F;
10797 15 : info->far_ptr = & ((M_PlaneSensor *) node)->trackPoint_changed;
10798 15 : return GF_OK;
10799 : case 7:
10800 15 : info->name = "translation_changed";
10801 15 : info->eventType = GF_SG_EVENT_OUT;
10802 15 : info->fieldType = GF_SG_VRML_SFVEC3F;
10803 15 : info->far_ptr = & ((M_PlaneSensor *) node)->translation_changed;
10804 15 : return GF_OK;
10805 : default:
10806 0 : return GF_BAD_PARAM;
10807 : }
10808 188 : }
10809 :
10810 :
10811 : static s32 PlaneSensor_get_field_index_by_name(char *name)
10812 : {
10813 56 : if (!strcmp("autoOffset", name)) return 0;
10814 28 : if (!strcmp("enabled", name)) return 1;
10815 32 : if (!strcmp("maxPosition", name)) return 2;
10816 28 : if (!strcmp("minPosition", name)) return 3;
10817 24 : if (!strcmp("offset", name)) return 4;
10818 24 : if (!strcmp("isActive", name)) return 5;
10819 12 : if (!strcmp("trackPoint_changed", name)) return 6;
10820 8 : if (!strcmp("translation_changed", name)) return 7;
10821 0 : return -1;
10822 28 : }
10823 : static Bool PlaneSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10824 : {
10825 0 : switch (FieldIndex) {
10826 : case 2:
10827 0 : *AType = 0;
10828 0 : *QType = 2;
10829 0 : *b_min = FIX_MIN;
10830 0 : *b_max = FIX_MAX;
10831 0 : return 1;
10832 : case 3:
10833 0 : *AType = 0;
10834 0 : *QType = 2;
10835 0 : *b_min = FIX_MIN;
10836 0 : *b_max = FIX_MAX;
10837 0 : return 1;
10838 : case 4:
10839 0 : *AType = 0;
10840 0 : *QType = 1;
10841 0 : *b_min = FIX_MIN;
10842 0 : *b_max = FIX_MAX;
10843 0 : return 1;
10844 : default:
10845 0 : return 0;
10846 : }
10847 0 : }
10848 :
10849 :
10850 :
10851 : GF_Node *PlaneSensor_Create()
10852 : {
10853 : M_PlaneSensor *p;
10854 54 : GF_SAFEALLOC(p, M_PlaneSensor);
10855 18 : if(!p) return NULL;
10856 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PlaneSensor);
10857 :
10858 : /*default field values*/
10859 18 : p->autoOffset = 1;
10860 18 : p->enabled = 1;
10861 18 : p->maxPosition.x = FLT2FIX(-1);
10862 18 : p->maxPosition.y = FLT2FIX(-1);
10863 18 : p->minPosition.x = FLT2FIX(0);
10864 18 : p->minPosition.y = FLT2FIX(0);
10865 18 : p->offset.x = FLT2FIX(0);
10866 18 : p->offset.y = FLT2FIX(0);
10867 18 : p->offset.z = FLT2FIX(0);
10868 18 : return (GF_Node *)p;
10869 18 : }
10870 :
10871 :
10872 : /*
10873 : PlaneSensor2D Node deletion
10874 : */
10875 :
10876 : static void PlaneSensor2D_Del(GF_Node *node)
10877 : {
10878 558 : M_PlaneSensor2D *p = (M_PlaneSensor2D *) node;
10879 279 : gf_node_free((GF_Node *) p);
10880 279 : }
10881 :
10882 : static const u16 PlaneSensor2D_Def2All[] = { 0, 1, 2, 3, 4};
10883 : static const u16 PlaneSensor2D_In2All[] = { 0, 1, 2, 3, 4};
10884 : static const u16 PlaneSensor2D_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
10885 :
10886 : static u32 PlaneSensor2D_get_field_count(GF_Node *node, u8 IndexMode)
10887 : {
10888 790 : switch(IndexMode) {
10889 : case GF_SG_FIELD_CODING_IN:
10890 0 : return 5;
10891 : case GF_SG_FIELD_CODING_DEF:
10892 148 : return 5;
10893 : case GF_SG_FIELD_CODING_OUT:
10894 139 : return 8;
10895 : case GF_SG_FIELD_CODING_DYN:
10896 0 : return 0;
10897 : default:
10898 108 : return 8;
10899 : }
10900 395 : }
10901 :
10902 : static GF_Err PlaneSensor2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
10903 : {
10904 1332 : switch(IndexMode) {
10905 : case GF_SG_FIELD_CODING_IN:
10906 0 : *allField = PlaneSensor2D_In2All[inField];
10907 0 : return GF_OK;
10908 : case GF_SG_FIELD_CODING_DEF:
10909 335 : *allField = PlaneSensor2D_Def2All[inField];
10910 335 : return GF_OK;
10911 : case GF_SG_FIELD_CODING_OUT:
10912 331 : *allField = PlaneSensor2D_Out2All[inField];
10913 331 : return GF_OK;
10914 : default:
10915 0 : return GF_BAD_PARAM;
10916 : }
10917 666 : }
10918 : static GF_Err PlaneSensor2D_get_field(GF_Node *node, GF_FieldInfo *info)
10919 : {
10920 4720 : switch (info->fieldIndex) {
10921 : case 0:
10922 299 : info->name = "autoOffset";
10923 299 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10924 299 : info->fieldType = GF_SG_VRML_SFBOOL;
10925 299 : info->far_ptr = & ((M_PlaneSensor2D *) node)->autoOffset;
10926 299 : return GF_OK;
10927 : case 1:
10928 280 : info->name = "enabled";
10929 280 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10930 280 : info->fieldType = GF_SG_VRML_SFBOOL;
10931 280 : info->far_ptr = & ((M_PlaneSensor2D *) node)->enabled;
10932 280 : return GF_OK;
10933 : case 2:
10934 515 : info->name = "maxPosition";
10935 515 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10936 515 : info->fieldType = GF_SG_VRML_SFVEC2F;
10937 515 : info->far_ptr = & ((M_PlaneSensor2D *) node)->maxPosition;
10938 515 : return GF_OK;
10939 : case 3:
10940 479 : info->name = "minPosition";
10941 479 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10942 479 : info->fieldType = GF_SG_VRML_SFVEC2F;
10943 479 : info->far_ptr = & ((M_PlaneSensor2D *) node)->minPosition;
10944 479 : return GF_OK;
10945 : case 4:
10946 333 : info->name = "offset";
10947 333 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10948 333 : info->fieldType = GF_SG_VRML_SFVEC2F;
10949 333 : info->far_ptr = & ((M_PlaneSensor2D *) node)->offset;
10950 333 : return GF_OK;
10951 : case 5:
10952 112 : info->name = "isActive";
10953 112 : info->eventType = GF_SG_EVENT_OUT;
10954 112 : info->fieldType = GF_SG_VRML_SFBOOL;
10955 112 : info->far_ptr = & ((M_PlaneSensor2D *) node)->isActive;
10956 112 : return GF_OK;
10957 : case 6:
10958 112 : info->name = "trackPoint_changed";
10959 112 : info->eventType = GF_SG_EVENT_OUT;
10960 112 : info->fieldType = GF_SG_VRML_SFVEC2F;
10961 112 : info->far_ptr = & ((M_PlaneSensor2D *) node)->trackPoint_changed;
10962 112 : return GF_OK;
10963 : case 7:
10964 230 : info->name = "translation_changed";
10965 230 : info->eventType = GF_SG_EVENT_OUT;
10966 230 : info->fieldType = GF_SG_VRML_SFVEC2F;
10967 230 : info->far_ptr = & ((M_PlaneSensor2D *) node)->translation_changed;
10968 230 : return GF_OK;
10969 : default:
10970 0 : return GF_BAD_PARAM;
10971 : }
10972 2360 : }
10973 :
10974 :
10975 : static s32 PlaneSensor2D_get_field_index_by_name(char *name)
10976 : {
10977 428 : if (!strcmp("autoOffset", name)) return 0;
10978 202 : if (!strcmp("enabled", name)) return 1;
10979 268 : if (!strcmp("maxPosition", name)) return 2;
10980 190 : if (!strcmp("minPosition", name)) return 3;
10981 98 : if (!strcmp("offset", name)) return 4;
10982 68 : if (!strcmp("isActive", name)) return 5;
10983 66 : if (!strcmp("trackPoint_changed", name)) return 6;
10984 124 : if (!strcmp("translation_changed", name)) return 7;
10985 0 : return -1;
10986 210 : }
10987 : static Bool PlaneSensor2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10988 : {
10989 0 : switch (FieldIndex) {
10990 : case 2:
10991 0 : *AType = 0;
10992 0 : *QType = 2;
10993 0 : *b_min = FIX_MIN;
10994 0 : *b_max = FIX_MAX;
10995 0 : return 1;
10996 : case 3:
10997 0 : *AType = 0;
10998 0 : *QType = 2;
10999 0 : *b_min = FIX_MIN;
11000 0 : *b_max = FIX_MAX;
11001 0 : return 1;
11002 : case 4:
11003 0 : *AType = 0;
11004 0 : *QType = 12;
11005 0 : *b_min = FIX_MIN;
11006 0 : *b_max = FIX_MAX;
11007 0 : return 1;
11008 : default:
11009 0 : return 0;
11010 : }
11011 0 : }
11012 :
11013 :
11014 :
11015 : GF_Node *PlaneSensor2D_Create()
11016 : {
11017 : M_PlaneSensor2D *p;
11018 837 : GF_SAFEALLOC(p, M_PlaneSensor2D);
11019 279 : if(!p) return NULL;
11020 279 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PlaneSensor2D);
11021 :
11022 : /*default field values*/
11023 279 : p->autoOffset = 1;
11024 279 : p->enabled = 1;
11025 279 : p->maxPosition.x = FLT2FIX(0);
11026 279 : p->maxPosition.y = FLT2FIX(0);
11027 279 : p->minPosition.x = FLT2FIX(0);
11028 279 : p->minPosition.y = FLT2FIX(0);
11029 279 : p->offset.x = FLT2FIX(0);
11030 279 : p->offset.y = FLT2FIX(0);
11031 279 : return (GF_Node *)p;
11032 279 : }
11033 :
11034 :
11035 : /*
11036 : PointLight Node deletion
11037 : */
11038 :
11039 : static void PointLight_Del(GF_Node *node)
11040 : {
11041 36 : M_PointLight *p = (M_PointLight *) node;
11042 18 : gf_node_free((GF_Node *) p);
11043 18 : }
11044 :
11045 : static const u16 PointLight_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
11046 : static const u16 PointLight_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
11047 : static const u16 PointLight_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
11048 : static const u16 PointLight_Dyn2All[] = { 0, 1, 2, 3, 4, 6};
11049 :
11050 : static u32 PointLight_get_field_count(GF_Node *node, u8 IndexMode)
11051 : {
11052 50 : switch(IndexMode) {
11053 : case GF_SG_FIELD_CODING_IN:
11054 9 : return 7;
11055 : case GF_SG_FIELD_CODING_DEF:
11056 9 : return 7;
11057 : case GF_SG_FIELD_CODING_OUT:
11058 0 : return 7;
11059 : case GF_SG_FIELD_CODING_DYN:
11060 0 : return 6;
11061 : default:
11062 7 : return 7;
11063 : }
11064 25 : }
11065 :
11066 : static GF_Err PointLight_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
11067 : {
11068 76 : switch(IndexMode) {
11069 : case GF_SG_FIELD_CODING_IN:
11070 9 : *allField = PointLight_In2All[inField];
11071 9 : return GF_OK;
11072 : case GF_SG_FIELD_CODING_DEF:
11073 29 : *allField = PointLight_Def2All[inField];
11074 29 : return GF_OK;
11075 : case GF_SG_FIELD_CODING_OUT:
11076 0 : *allField = PointLight_Out2All[inField];
11077 0 : return GF_OK;
11078 : case GF_SG_FIELD_CODING_DYN:
11079 0 : *allField = PointLight_Dyn2All[inField];
11080 0 : return GF_OK;
11081 : default:
11082 0 : return GF_BAD_PARAM;
11083 : }
11084 38 : }
11085 : static GF_Err PointLight_get_field(GF_Node *node, GF_FieldInfo *info)
11086 : {
11087 358 : switch (info->fieldIndex) {
11088 : case 0:
11089 18 : info->name = "ambientIntensity";
11090 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11091 18 : info->fieldType = GF_SG_VRML_SFFLOAT;
11092 18 : info->far_ptr = & ((M_PointLight *) node)->ambientIntensity;
11093 18 : return GF_OK;
11094 : case 1:
11095 41 : info->name = "attenuation";
11096 41 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11097 41 : info->fieldType = GF_SG_VRML_SFVEC3F;
11098 41 : info->far_ptr = & ((M_PointLight *) node)->attenuation;
11099 41 : return GF_OK;
11100 : case 2:
11101 33 : info->name = "color";
11102 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11103 33 : info->fieldType = GF_SG_VRML_SFCOLOR;
11104 33 : info->far_ptr = & ((M_PointLight *) node)->color;
11105 33 : return GF_OK;
11106 : case 3:
11107 18 : info->name = "intensity";
11108 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11109 18 : info->fieldType = GF_SG_VRML_SFFLOAT;
11110 18 : info->far_ptr = & ((M_PointLight *) node)->intensity;
11111 18 : return GF_OK;
11112 : case 4:
11113 33 : info->name = "location";
11114 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11115 33 : info->fieldType = GF_SG_VRML_SFVEC3F;
11116 33 : info->far_ptr = & ((M_PointLight *) node)->location;
11117 33 : return GF_OK;
11118 : case 5:
11119 18 : info->name = "on";
11120 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11121 18 : info->fieldType = GF_SG_VRML_SFBOOL;
11122 18 : info->far_ptr = & ((M_PointLight *) node)->on;
11123 18 : return GF_OK;
11124 : case 6:
11125 18 : info->name = "radius";
11126 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11127 18 : info->fieldType = GF_SG_VRML_SFFLOAT;
11128 18 : info->far_ptr = & ((M_PointLight *) node)->radius;
11129 18 : return GF_OK;
11130 : default:
11131 0 : return GF_BAD_PARAM;
11132 : }
11133 179 : }
11134 :
11135 :
11136 : static s32 PointLight_get_field_index_by_name(char *name)
11137 : {
11138 32 : if (!strcmp("ambientIntensity", name)) return 0;
11139 24 : if (!strcmp("attenuation", name)) return 1;
11140 12 : if (!strcmp("color", name)) return 2;
11141 4 : if (!strcmp("intensity", name)) return 3;
11142 8 : if (!strcmp("location", name)) return 4;
11143 0 : if (!strcmp("on", name)) return 5;
11144 0 : if (!strcmp("radius", name)) return 6;
11145 0 : return -1;
11146 16 : }
11147 : static Bool PointLight_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
11148 : {
11149 0 : switch (FieldIndex) {
11150 : case 0:
11151 0 : *AType = 8;
11152 0 : *QType = 4;
11153 0 : *b_min = FLT2FIX(0);
11154 0 : *b_max = FLT2FIX(1);
11155 0 : return 1;
11156 : case 1:
11157 0 : *AType = 1;
11158 0 : *QType = 11;
11159 0 : *b_min = FLT2FIX(0);
11160 0 : *b_max = FIX_MAX;
11161 0 : return 1;
11162 : case 2:
11163 0 : *AType = 4;
11164 0 : *QType = 4;
11165 0 : *b_min = FLT2FIX(0);
11166 0 : *b_max = FLT2FIX(1);
11167 0 : return 1;
11168 : case 3:
11169 0 : *AType = 8;
11170 0 : *QType = 4;
11171 0 : *b_min = FLT2FIX(0);
11172 0 : *b_max = FLT2FIX(1);
11173 0 : return 1;
11174 : case 4:
11175 0 : *AType = 1;
11176 0 : *QType = 1;
11177 0 : *b_min = FIX_MIN;
11178 0 : *b_max = FIX_MAX;
11179 0 : return 1;
11180 : case 6:
11181 0 : *AType = 7;
11182 0 : *QType = 11;
11183 0 : *b_min = FLT2FIX(0);
11184 0 : *b_max = FIX_MAX;
11185 0 : return 1;
11186 : default:
11187 0 : return 0;
11188 : }
11189 0 : }
11190 :
11191 :
11192 :
11193 : GF_Node *PointLight_Create()
11194 : {
11195 : M_PointLight *p;
11196 54 : GF_SAFEALLOC(p, M_PointLight);
11197 18 : if(!p) return NULL;
11198 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PointLight);
11199 :
11200 : /*default field values*/
11201 18 : p->ambientIntensity = FLT2FIX(0);
11202 18 : p->attenuation.x = FLT2FIX(1);
11203 18 : p->attenuation.y = FLT2FIX(0);
11204 18 : p->attenuation.z = FLT2FIX(0);
11205 18 : p->color.red = FLT2FIX(1);
11206 18 : p->color.green = FLT2FIX(1);
11207 18 : p->color.blue = FLT2FIX(1);
11208 18 : p->intensity = FLT2FIX(1);
11209 18 : p->location.x = FLT2FIX(0);
11210 18 : p->location.y = FLT2FIX(0);
11211 18 : p->location.z = FLT2FIX(0);
11212 18 : p->on = 1;
11213 18 : p->radius = FLT2FIX(100);
11214 18 : return (GF_Node *)p;
11215 18 : }
11216 :
11217 :
11218 : /*
11219 : PointSet Node deletion
11220 : */
11221 :
11222 : static void PointSet_Del(GF_Node *node)
11223 : {
11224 36 : M_PointSet *p = (M_PointSet *) node;
11225 18 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
11226 18 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
11227 18 : gf_node_free((GF_Node *) p);
11228 18 : }
11229 :
11230 : static const u16 PointSet_Def2All[] = { 0, 1};
11231 : static const u16 PointSet_In2All[] = { 0, 1};
11232 : static const u16 PointSet_Out2All[] = { 0, 1};
11233 :
11234 : static u32 PointSet_get_field_count(GF_Node *node, u8 IndexMode)
11235 : {
11236 32 : switch(IndexMode) {
11237 : case GF_SG_FIELD_CODING_IN:
11238 0 : return 2;
11239 : case GF_SG_FIELD_CODING_DEF:
11240 9 : return 2;
11241 : case GF_SG_FIELD_CODING_OUT:
11242 0 : return 2;
11243 : case GF_SG_FIELD_CODING_DYN:
11244 0 : return 0;
11245 : default:
11246 7 : return 2;
11247 : }
11248 16 : }
11249 :
11250 : static GF_Err PointSet_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
11251 : {
11252 18 : switch(IndexMode) {
11253 : case GF_SG_FIELD_CODING_IN:
11254 0 : *allField = PointSet_In2All[inField];
11255 0 : return GF_OK;
11256 : case GF_SG_FIELD_CODING_DEF:
11257 9 : *allField = PointSet_Def2All[inField];
11258 9 : return GF_OK;
11259 : case GF_SG_FIELD_CODING_OUT:
11260 0 : *allField = PointSet_Out2All[inField];
11261 0 : return GF_OK;
11262 : default:
11263 0 : return GF_BAD_PARAM;
11264 : }
11265 9 : }
11266 : static GF_Err PointSet_get_field(GF_Node *node, GF_FieldInfo *info)
11267 : {
11268 66 : switch (info->fieldIndex) {
11269 : case 0:
11270 9 : info->name = "color";
11271 9 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11272 9 : info->fieldType = GF_SG_VRML_SFNODE;
11273 9 : info->NDTtype = NDT_SFColorNode;
11274 9 : info->far_ptr = & ((M_PointSet *)node)->color;
11275 9 : return GF_OK;
11276 : case 1:
11277 24 : info->name = "coord";
11278 24 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11279 24 : info->fieldType = GF_SG_VRML_SFNODE;
11280 24 : info->NDTtype = NDT_SFCoordinateNode;
11281 24 : info->far_ptr = & ((M_PointSet *)node)->coord;
11282 24 : return GF_OK;
11283 : default:
11284 0 : return GF_BAD_PARAM;
11285 : }
11286 33 : }
11287 :
11288 :
11289 : static s32 PointSet_get_field_index_by_name(char *name)
11290 : {
11291 8 : if (!strcmp("color", name)) return 0;
11292 8 : if (!strcmp("coord", name)) return 1;
11293 0 : return -1;
11294 4 : }
11295 : static Bool PointSet_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
11296 : {
11297 : switch (FieldIndex) {
11298 : default:
11299 0 : return 0;
11300 : }
11301 : }
11302 :
11303 :
11304 :
11305 : GF_Node *PointSet_Create()
11306 : {
11307 : M_PointSet *p;
11308 54 : GF_SAFEALLOC(p, M_PointSet);
11309 18 : if(!p) return NULL;
11310 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PointSet);
11311 :
11312 : /*default field values*/
11313 18 : return (GF_Node *)p;
11314 18 : }
11315 :
11316 :
11317 : /*
11318 : PointSet2D Node deletion
11319 : */
11320 :
11321 : static void PointSet2D_Del(GF_Node *node)
11322 : {
11323 184 : M_PointSet2D *p = (M_PointSet2D *) node;
11324 92 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
11325 92 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
11326 92 : gf_node_free((GF_Node *) p);
11327 92 : }
11328 :
11329 : static const u16 PointSet2D_Def2All[] = { 0, 1};
11330 : static const u16 PointSet2D_In2All[] = { 0, 1};
11331 : static const u16 PointSet2D_Out2All[] = { 0, 1};
11332 :
11333 : static u32 PointSet2D_get_field_count(GF_Node *node, u8 IndexMode)
11334 : {
11335 164 : switch(IndexMode) {
11336 : case GF_SG_FIELD_CODING_IN:
11337 0 : return 2;
11338 : case GF_SG_FIELD_CODING_DEF:
11339 47 : return 2;
11340 : case GF_SG_FIELD_CODING_OUT:
11341 0 : return 2;
11342 : case GF_SG_FIELD_CODING_DYN:
11343 0 : return 0;
11344 : default:
11345 35 : return 2;
11346 : }
11347 82 : }
11348 :
11349 : static GF_Err PointSet2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
11350 : {
11351 94 : switch(IndexMode) {
11352 : case GF_SG_FIELD_CODING_IN:
11353 0 : *allField = PointSet2D_In2All[inField];
11354 0 : return GF_OK;
11355 : case GF_SG_FIELD_CODING_DEF:
11356 47 : *allField = PointSet2D_Def2All[inField];
11357 47 : return GF_OK;
11358 : case GF_SG_FIELD_CODING_OUT:
11359 0 : *allField = PointSet2D_Out2All[inField];
11360 0 : return GF_OK;
11361 : default:
11362 0 : return GF_BAD_PARAM;
11363 : }
11364 47 : }
11365 : static GF_Err PointSet2D_get_field(GF_Node *node, GF_FieldInfo *info)
11366 : {
11367 338 : switch (info->fieldIndex) {
11368 : case 0:
11369 46 : info->name = "color";
11370 46 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11371 46 : info->fieldType = GF_SG_VRML_SFNODE;
11372 46 : info->NDTtype = NDT_SFColorNode;
11373 46 : info->far_ptr = & ((M_PointSet2D *)node)->color;
11374 46 : return GF_OK;
11375 : case 1:
11376 123 : info->name = "coord";
11377 123 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11378 123 : info->fieldType = GF_SG_VRML_SFNODE;
11379 123 : info->NDTtype = NDT_SFCoordinate2DNode;
11380 123 : info->far_ptr = & ((M_PointSet2D *)node)->coord;
11381 123 : return GF_OK;
11382 : default:
11383 0 : return GF_BAD_PARAM;
11384 : }
11385 169 : }
11386 :
11387 :
11388 : static s32 PointSet2D_get_field_index_by_name(char *name)
11389 : {
11390 42 : if (!strcmp("color", name)) return 0;
11391 42 : if (!strcmp("coord", name)) return 1;
11392 0 : return -1;
11393 21 : }
11394 : static Bool PointSet2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
11395 : {
11396 : switch (FieldIndex) {
11397 : default:
11398 0 : return 0;
11399 : }
11400 : }
11401 :
11402 :
11403 :
11404 : GF_Node *PointSet2D_Create()
11405 : {
11406 : M_PointSet2D *p;
11407 276 : GF_SAFEALLOC(p, M_PointSet2D);
11408 92 : if(!p) return NULL;
11409 92 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PointSet2D);
11410 :
11411 : /*default field values*/
11412 92 : return (GF_Node *)p;
11413 92 : }
11414 :
11415 :
11416 : /*
11417 : PositionInterpolator Node deletion
11418 : */
11419 :
11420 : static void PositionInterpolator_Del(GF_Node *node)
11421 : {
11422 396 : M_PositionInterpolator *p = (M_PositionInterpolator *) node;
11423 198 : gf_sg_mffloat_del(p->key);
11424 198 : gf_sg_mfvec3f_del(p->keyValue);
11425 198 : gf_node_free((GF_Node *) p);
11426 198 : }
11427 :
11428 : static const u16 PositionInterpolator_Def2All[] = { 1, 2};
11429 : static const u16 PositionInterpolator_In2All[] = { 0, 1, 2};
11430 : static const u16 PositionInterpolator_Out2All[] = { 1, 2, 3};
11431 :
11432 : static u32 PositionInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
11433 : {
11434 748 : switch(IndexMode) {
11435 : case GF_SG_FIELD_CODING_IN:
11436 99 : return 3;
11437 : case GF_SG_FIELD_CODING_DEF:
11438 99 : return 2;
11439 : case GF_SG_FIELD_CODING_OUT:
11440 99 : return 3;
11441 : case GF_SG_FIELD_CODING_DYN:
11442 0 : return 0;
11443 : default:
11444 77 : return 4;
11445 : }
11446 374 : }
11447 :
11448 : static GF_Err PositionInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
11449 : {
11450 704 : switch(IndexMode) {
11451 : case GF_SG_FIELD_CODING_IN:
11452 77 : *allField = PositionInterpolator_In2All[inField];
11453 77 : return GF_OK;
11454 : case GF_SG_FIELD_CODING_DEF:
11455 154 : *allField = PositionInterpolator_Def2All[inField];
11456 154 : return GF_OK;
11457 : case GF_SG_FIELD_CODING_OUT:
11458 121 : *allField = PositionInterpolator_Out2All[inField];
11459 121 : return GF_OK;
11460 : default:
11461 0 : return GF_BAD_PARAM;
11462 : }
11463 352 : }
11464 : static GF_Err PositionInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
11465 : {
11466 2112 : switch (info->fieldIndex) {
11467 : case 0:
11468 165 : info->name = "set_fraction";
11469 165 : info->eventType = GF_SG_EVENT_IN;
11470 165 : info->on_event_in = ((M_PositionInterpolator *)node)->on_set_fraction;
11471 165 : info->fieldType = GF_SG_VRML_SFFLOAT;
11472 165 : info->far_ptr = & ((M_PositionInterpolator *) node)->set_fraction;
11473 165 : return GF_OK;
11474 : case 1:
11475 363 : info->name = "key";
11476 363 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11477 363 : info->fieldType = GF_SG_VRML_MFFLOAT;
11478 363 : info->far_ptr = & ((M_PositionInterpolator *) node)->key;
11479 363 : return GF_OK;
11480 : case 2:
11481 363 : info->name = "keyValue";
11482 363 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11483 363 : info->fieldType = GF_SG_VRML_MFVEC3F;
11484 363 : info->far_ptr = & ((M_PositionInterpolator *) node)->keyValue;
11485 363 : return GF_OK;
11486 : case 3:
11487 165 : info->name = "value_changed";
11488 165 : info->eventType = GF_SG_EVENT_OUT;
11489 165 : info->fieldType = GF_SG_VRML_SFVEC3F;
11490 165 : info->far_ptr = & ((M_PositionInterpolator *) node)->value_changed;
11491 165 : return GF_OK;
11492 : default:
11493 0 : return GF_BAD_PARAM;
11494 : }
11495 1056 : }
11496 :
11497 :
11498 : static s32 PositionInterpolator_get_field_index_by_name(char *name)
11499 : {
11500 396 : if (!strcmp("set_fraction", name)) return 0;
11501 176 : if (!strcmp("key", name)) return 1;
11502 132 : if (!strcmp("keyValue", name)) return 2;
11503 88 : if (!strcmp("value_changed", name)) return 3;
11504 0 : return -1;
11505 176 : }
11506 : static Bool PositionInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
11507 : {
11508 0 : switch (FieldIndex) {
11509 : case 1:
11510 0 : *AType = 0;
11511 0 : *QType = 8;
11512 0 : *b_min = FLT2FIX(0);
11513 0 : *b_max = FLT2FIX(1);
11514 0 : return 1;
11515 : case 2:
11516 0 : *AType = 0;
11517 0 : *QType = 1;
11518 0 : *b_min = FIX_MIN;
11519 0 : *b_max = FIX_MAX;
11520 0 : return 1;
11521 : default:
11522 0 : return 0;
11523 : }
11524 0 : }
11525 :
11526 :
11527 :
11528 : GF_Node *PositionInterpolator_Create()
11529 : {
11530 : M_PositionInterpolator *p;
11531 594 : GF_SAFEALLOC(p, M_PositionInterpolator);
11532 198 : if(!p) return NULL;
11533 198 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionInterpolator);
11534 :
11535 : /*default field values*/
11536 198 : return (GF_Node *)p;
11537 198 : }
11538 :
11539 :
11540 : /*
11541 : PositionInterpolator2D Node deletion
11542 : */
11543 :
11544 : static void PositionInterpolator2D_Del(GF_Node *node)
11545 : {
11546 1220 : M_PositionInterpolator2D *p = (M_PositionInterpolator2D *) node;
11547 610 : gf_sg_mffloat_del(p->key);
11548 610 : gf_sg_mfvec2f_del(p->keyValue);
11549 610 : gf_node_free((GF_Node *) p);
11550 610 : }
11551 :
11552 : static const u16 PositionInterpolator2D_Def2All[] = { 1, 2};
11553 : static const u16 PositionInterpolator2D_In2All[] = { 0, 1, 2};
11554 : static const u16 PositionInterpolator2D_Out2All[] = { 1, 2, 3};
11555 :
11556 : static u32 PositionInterpolator2D_get_field_count(GF_Node *node, u8 IndexMode)
11557 : {
11558 2258 : switch(IndexMode) {
11559 : case GF_SG_FIELD_CODING_IN:
11560 288 : return 3;
11561 : case GF_SG_FIELD_CODING_DEF:
11562 299 : return 2;
11563 : case GF_SG_FIELD_CODING_OUT:
11564 297 : return 3;
11565 : case GF_SG_FIELD_CODING_DYN:
11566 0 : return 0;
11567 : default:
11568 245 : return 4;
11569 : }
11570 1129 : }
11571 :
11572 : static GF_Err PositionInterpolator2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
11573 : {
11574 2098 : switch(IndexMode) {
11575 : case GF_SG_FIELD_CODING_IN:
11576 224 : *allField = PositionInterpolator2D_In2All[inField];
11577 224 : return GF_OK;
11578 : case GF_SG_FIELD_CODING_DEF:
11579 462 : *allField = PositionInterpolator2D_Def2All[inField];
11580 462 : return GF_OK;
11581 : case GF_SG_FIELD_CODING_OUT:
11582 363 : *allField = PositionInterpolator2D_Out2All[inField];
11583 363 : return GF_OK;
11584 : default:
11585 0 : return GF_BAD_PARAM;
11586 : }
11587 1049 : }
11588 : static GF_Err PositionInterpolator2D_get_field(GF_Node *node, GF_FieldInfo *info)
11589 : {
11590 6464 : switch (info->fieldIndex) {
11591 : case 0:
11592 494 : info->name = "set_fraction";
11593 494 : info->eventType = GF_SG_EVENT_IN;
11594 494 : info->on_event_in = ((M_PositionInterpolator2D *)node)->on_set_fraction;
11595 494 : info->fieldType = GF_SG_VRML_SFFLOAT;
11596 494 : info->far_ptr = & ((M_PositionInterpolator2D *) node)->set_fraction;
11597 494 : return GF_OK;
11598 : case 1:
11599 1118 : info->name = "key";
11600 1118 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11601 1118 : info->fieldType = GF_SG_VRML_MFFLOAT;
11602 1118 : info->far_ptr = & ((M_PositionInterpolator2D *) node)->key;
11603 1118 : return GF_OK;
11604 : case 2:
11605 1118 : info->name = "keyValue";
11606 1118 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11607 1118 : info->fieldType = GF_SG_VRML_MFVEC2F;
11608 1118 : info->far_ptr = & ((M_PositionInterpolator2D *) node)->keyValue;
11609 1118 : return GF_OK;
11610 : case 3:
11611 502 : info->name = "value_changed";
11612 502 : info->eventType = GF_SG_EVENT_OUT;
11613 502 : info->fieldType = GF_SG_VRML_SFVEC2F;
11614 502 : info->far_ptr = & ((M_PositionInterpolator2D *) node)->value_changed;
11615 502 : return GF_OK;
11616 : default:
11617 0 : return GF_BAD_PARAM;
11618 : }
11619 3232 : }
11620 :
11621 :
11622 : static s32 PositionInterpolator2D_get_field_index_by_name(char *name)
11623 : {
11624 1192 : if (!strcmp("set_fraction", name)) return 0;
11625 540 : if (!strcmp("key", name)) return 1;
11626 404 : if (!strcmp("keyValue", name)) return 2;
11627 264 : if (!strcmp("value_changed", name)) return 3;
11628 0 : return -1;
11629 532 : }
11630 : static Bool PositionInterpolator2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
11631 : {
11632 0 : switch (FieldIndex) {
11633 : case 1:
11634 0 : *AType = 0;
11635 0 : *QType = 8;
11636 0 : *b_min = FLT2FIX(0);
11637 0 : *b_max = FLT2FIX(1);
11638 0 : return 1;
11639 : case 2:
11640 0 : *AType = 0;
11641 0 : *QType = 2;
11642 0 : *b_min = FIX_MIN;
11643 0 : *b_max = FIX_MAX;
11644 0 : return 1;
11645 : default:
11646 0 : return 0;
11647 : }
11648 0 : }
11649 :
11650 :
11651 :
11652 : GF_Node *PositionInterpolator2D_Create()
11653 : {
11654 : M_PositionInterpolator2D *p;
11655 1830 : GF_SAFEALLOC(p, M_PositionInterpolator2D);
11656 610 : if(!p) return NULL;
11657 610 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionInterpolator2D);
11658 :
11659 : /*default field values*/
11660 610 : return (GF_Node *)p;
11661 610 : }
11662 :
11663 :
11664 : /*
11665 : ProximitySensor2D Node deletion
11666 : */
11667 :
11668 : static void ProximitySensor2D_Del(GF_Node *node)
11669 : {
11670 72 : M_ProximitySensor2D *p = (M_ProximitySensor2D *) node;
11671 36 : gf_node_free((GF_Node *) p);
11672 36 : }
11673 :
11674 : static const u16 ProximitySensor2D_Def2All[] = { 0, 1, 2};
11675 : static const u16 ProximitySensor2D_In2All[] = { 0, 1, 2};
11676 : static const u16 ProximitySensor2D_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
11677 :
11678 : static u32 ProximitySensor2D_get_field_count(GF_Node *node, u8 IndexMode)
11679 : {
11680 136 : switch(IndexMode) {
11681 : case GF_SG_FIELD_CODING_IN:
11682 0 : return 3;
11683 : case GF_SG_FIELD_CODING_DEF:
11684 18 : return 3;
11685 : case GF_SG_FIELD_CODING_OUT:
11686 36 : return 8;
11687 : case GF_SG_FIELD_CODING_DYN:
11688 0 : return 0;
11689 : default:
11690 14 : return 8;
11691 : }
11692 68 : }
11693 :
11694 : static GF_Err ProximitySensor2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
11695 : {
11696 148 : switch(IndexMode) {
11697 : case GF_SG_FIELD_CODING_IN:
11698 0 : *allField = ProximitySensor2D_In2All[inField];
11699 0 : return GF_OK;
11700 : case GF_SG_FIELD_CODING_DEF:
11701 22 : *allField = ProximitySensor2D_Def2All[inField];
11702 22 : return GF_OK;
11703 : case GF_SG_FIELD_CODING_OUT:
11704 52 : *allField = ProximitySensor2D_Out2All[inField];
11705 52 : return GF_OK;
11706 : default:
11707 0 : return GF_BAD_PARAM;
11708 : }
11709 74 : }
11710 : static GF_Err ProximitySensor2D_get_field(GF_Node *node, GF_FieldInfo *info)
11711 : {
11712 480 : switch (info->fieldIndex) {
11713 : case 0:
11714 36 : info->name = "center";
11715 36 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11716 36 : info->fieldType = GF_SG_VRML_SFVEC2F;
11717 36 : info->far_ptr = & ((M_ProximitySensor2D *) node)->center;
11718 36 : return GF_OK;
11719 : case 1:
11720 66 : info->name = "size";
11721 66 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11722 66 : info->fieldType = GF_SG_VRML_SFVEC2F;
11723 66 : info->far_ptr = & ((M_ProximitySensor2D *) node)->size;
11724 66 : return GF_OK;
11725 : case 2:
11726 36 : info->name = "enabled";
11727 36 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11728 36 : info->fieldType = GF_SG_VRML_SFBOOL;
11729 36 : info->far_ptr = & ((M_ProximitySensor2D *) node)->enabled;
11730 36 : return GF_OK;
11731 : case 3:
11732 46 : info->name = "isActive";
11733 46 : info->eventType = GF_SG_EVENT_OUT;
11734 46 : info->fieldType = GF_SG_VRML_SFBOOL;
11735 46 : info->far_ptr = & ((M_ProximitySensor2D *) node)->isActive;
11736 46 : return GF_OK;
11737 : case 4:
11738 14 : info->name = "position_changed";
11739 14 : info->eventType = GF_SG_EVENT_OUT;
11740 14 : info->fieldType = GF_SG_VRML_SFVEC2F;
11741 14 : info->far_ptr = & ((M_ProximitySensor2D *) node)->position_changed;
11742 14 : return GF_OK;
11743 : case 5:
11744 14 : info->name = "orientation_changed";
11745 14 : info->eventType = GF_SG_EVENT_OUT;
11746 14 : info->fieldType = GF_SG_VRML_SFFLOAT;
11747 14 : info->far_ptr = & ((M_ProximitySensor2D *) node)->orientation_changed;
11748 14 : return GF_OK;
11749 : case 6:
11750 14 : info->name = "enterTime";
11751 14 : info->eventType = GF_SG_EVENT_OUT;
11752 14 : info->fieldType = GF_SG_VRML_SFTIME;
11753 14 : info->far_ptr = & ((M_ProximitySensor2D *) node)->enterTime;
11754 14 : return GF_OK;
11755 : case 7:
11756 14 : info->name = "exitTime";
11757 14 : info->eventType = GF_SG_EVENT_OUT;
11758 14 : info->fieldType = GF_SG_VRML_SFTIME;
11759 14 : info->far_ptr = & ((M_ProximitySensor2D *) node)->exitTime;
11760 14 : return GF_OK;
11761 : default:
11762 0 : return GF_BAD_PARAM;
11763 : }
11764 240 : }
11765 :
11766 :
11767 : static s32 ProximitySensor2D_get_field_index_by_name(char *name)
11768 : {
11769 48 : if (!strcmp("center", name)) return 0;
11770 32 : if (!strcmp("size", name)) return 1;
11771 16 : if (!strcmp("enabled", name)) return 2;
11772 32 : if (!strcmp("isActive", name)) return 3;
11773 0 : if (!strcmp("position_changed", name)) return 4;
11774 0 : if (!strcmp("orientation_changed", name)) return 5;
11775 0 : if (!strcmp("enterTime", name)) return 6;
11776 0 : if (!strcmp("exitTime", name)) return 7;
11777 0 : return -1;
11778 24 : }
11779 : static Bool ProximitySensor2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
11780 : {
11781 0 : switch (FieldIndex) {
11782 : case 0:
11783 0 : *AType = 0;
11784 0 : *QType = 2;
11785 0 : *b_min = FLT2FIX(-1);
11786 0 : *b_max = FIX_MAX;
11787 0 : return 1;
11788 : case 1:
11789 0 : *AType = 0;
11790 0 : *QType = 12;
11791 0 : *b_min = FLT2FIX(0);
11792 0 : *b_max = FIX_MAX;
11793 0 : return 1;
11794 : default:
11795 0 : return 0;
11796 : }
11797 0 : }
11798 :
11799 :
11800 :
11801 : GF_Node *ProximitySensor2D_Create()
11802 : {
11803 : M_ProximitySensor2D *p;
11804 108 : GF_SAFEALLOC(p, M_ProximitySensor2D);
11805 36 : if(!p) return NULL;
11806 36 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ProximitySensor2D);
11807 :
11808 : /*default field values*/
11809 36 : p->center.x = FLT2FIX(0);
11810 36 : p->center.y = FLT2FIX(0);
11811 36 : p->size.x = FLT2FIX(0);
11812 36 : p->size.y = FLT2FIX(0);
11813 36 : p->enabled = 1;
11814 36 : return (GF_Node *)p;
11815 36 : }
11816 :
11817 :
11818 : /*
11819 : ProximitySensor Node deletion
11820 : */
11821 :
11822 : static void ProximitySensor_Del(GF_Node *node)
11823 : {
11824 36 : M_ProximitySensor *p = (M_ProximitySensor *) node;
11825 18 : gf_node_free((GF_Node *) p);
11826 18 : }
11827 :
11828 : static const u16 ProximitySensor_Def2All[] = { 0, 1, 2};
11829 : static const u16 ProximitySensor_In2All[] = { 0, 1, 2};
11830 : static const u16 ProximitySensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
11831 :
11832 : static u32 ProximitySensor_get_field_count(GF_Node *node, u8 IndexMode)
11833 : {
11834 68 : switch(IndexMode) {
11835 : case GF_SG_FIELD_CODING_IN:
11836 0 : return 3;
11837 : case GF_SG_FIELD_CODING_DEF:
11838 9 : return 3;
11839 : case GF_SG_FIELD_CODING_OUT:
11840 18 : return 8;
11841 : case GF_SG_FIELD_CODING_DYN:
11842 0 : return 0;
11843 : default:
11844 7 : return 8;
11845 : }
11846 34 : }
11847 :
11848 : static GF_Err ProximitySensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
11849 : {
11850 102 : switch(IndexMode) {
11851 : case GF_SG_FIELD_CODING_IN:
11852 0 : *allField = ProximitySensor_In2All[inField];
11853 0 : return GF_OK;
11854 : case GF_SG_FIELD_CODING_DEF:
11855 11 : *allField = ProximitySensor_Def2All[inField];
11856 11 : return GF_OK;
11857 : case GF_SG_FIELD_CODING_OUT:
11858 40 : *allField = ProximitySensor_Out2All[inField];
11859 40 : return GF_OK;
11860 : default:
11861 0 : return GF_BAD_PARAM;
11862 : }
11863 51 : }
11864 : static GF_Err ProximitySensor_get_field(GF_Node *node, GF_FieldInfo *info)
11865 : {
11866 244 : switch (info->fieldIndex) {
11867 : case 0:
11868 20 : info->name = "center";
11869 20 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11870 20 : info->fieldType = GF_SG_VRML_SFVEC3F;
11871 20 : info->far_ptr = & ((M_ProximitySensor *) node)->center;
11872 20 : return GF_OK;
11873 : case 1:
11874 33 : info->name = "size";
11875 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11876 33 : info->fieldType = GF_SG_VRML_SFVEC3F;
11877 33 : info->far_ptr = & ((M_ProximitySensor *) node)->size;
11878 33 : return GF_OK;
11879 : case 2:
11880 18 : info->name = "enabled";
11881 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11882 18 : info->fieldType = GF_SG_VRML_SFBOOL;
11883 18 : info->far_ptr = & ((M_ProximitySensor *) node)->enabled;
11884 18 : return GF_OK;
11885 : case 3:
11886 7 : info->name = "isActive";
11887 7 : info->eventType = GF_SG_EVENT_OUT;
11888 7 : info->fieldType = GF_SG_VRML_SFBOOL;
11889 7 : info->far_ptr = & ((M_ProximitySensor *) node)->isActive;
11890 7 : return GF_OK;
11891 : case 4:
11892 7 : info->name = "position_changed";
11893 7 : info->eventType = GF_SG_EVENT_OUT;
11894 7 : info->fieldType = GF_SG_VRML_SFVEC3F;
11895 7 : info->far_ptr = & ((M_ProximitySensor *) node)->position_changed;
11896 7 : return GF_OK;
11897 : case 5:
11898 7 : info->name = "orientation_changed";
11899 7 : info->eventType = GF_SG_EVENT_OUT;
11900 7 : info->fieldType = GF_SG_VRML_SFROTATION;
11901 7 : info->far_ptr = & ((M_ProximitySensor *) node)->orientation_changed;
11902 7 : return GF_OK;
11903 : case 6:
11904 15 : info->name = "enterTime";
11905 15 : info->eventType = GF_SG_EVENT_OUT;
11906 15 : info->fieldType = GF_SG_VRML_SFTIME;
11907 15 : info->far_ptr = & ((M_ProximitySensor *) node)->enterTime;
11908 15 : return GF_OK;
11909 : case 7:
11910 15 : info->name = "exitTime";
11911 15 : info->eventType = GF_SG_EVENT_OUT;
11912 15 : info->fieldType = GF_SG_VRML_SFTIME;
11913 15 : info->far_ptr = & ((M_ProximitySensor *) node)->exitTime;
11914 15 : return GF_OK;
11915 : default:
11916 0 : return GF_BAD_PARAM;
11917 : }
11918 122 : }
11919 :
11920 :
11921 : static s32 ProximitySensor_get_field_index_by_name(char *name)
11922 : {
11923 30 : if (!strcmp("center", name)) return 0;
11924 16 : if (!strcmp("size", name)) return 1;
11925 8 : if (!strcmp("enabled", name)) return 2;
11926 8 : if (!strcmp("isActive", name)) return 3;
11927 8 : if (!strcmp("position_changed", name)) return 4;
11928 8 : if (!strcmp("orientation_changed", name)) return 5;
11929 12 : if (!strcmp("enterTime", name)) return 6;
11930 8 : if (!strcmp("exitTime", name)) return 7;
11931 0 : return -1;
11932 14 : }
11933 : static Bool ProximitySensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
11934 : {
11935 0 : switch (FieldIndex) {
11936 : case 0:
11937 0 : *AType = 0;
11938 0 : *QType = 1;
11939 0 : *b_min = FIX_MIN;
11940 0 : *b_max = FIX_MAX;
11941 0 : return 1;
11942 : case 1:
11943 0 : *AType = 0;
11944 0 : *QType = 11;
11945 0 : *b_min = FLT2FIX(0);
11946 0 : *b_max = FIX_MAX;
11947 0 : return 1;
11948 : default:
11949 0 : return 0;
11950 : }
11951 0 : }
11952 :
11953 :
11954 :
11955 : GF_Node *ProximitySensor_Create()
11956 : {
11957 : M_ProximitySensor *p;
11958 54 : GF_SAFEALLOC(p, M_ProximitySensor);
11959 18 : if(!p) return NULL;
11960 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ProximitySensor);
11961 :
11962 : /*default field values*/
11963 18 : p->center.x = FLT2FIX(0);
11964 18 : p->center.y = FLT2FIX(0);
11965 18 : p->center.z = FLT2FIX(0);
11966 18 : p->size.x = FLT2FIX(0);
11967 18 : p->size.y = FLT2FIX(0);
11968 18 : p->size.z = FLT2FIX(0);
11969 18 : p->enabled = 1;
11970 18 : return (GF_Node *)p;
11971 18 : }
11972 :
11973 :
11974 : /*
11975 : QuantizationParameter Node deletion
11976 : */
11977 :
11978 : static void QuantizationParameter_Del(GF_Node *node)
11979 : {
11980 246 : M_QuantizationParameter *p = (M_QuantizationParameter *) node;
11981 123 : gf_node_free((GF_Node *) p);
11982 123 : }
11983 :
11984 : static const u16 QuantizationParameter_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39};
11985 :
11986 : static u32 QuantizationParameter_get_field_count(GF_Node *node, u8 IndexMode)
11987 : {
11988 218 : switch(IndexMode) {
11989 : case GF_SG_FIELD_CODING_IN:
11990 0 : return 0;
11991 : case GF_SG_FIELD_CODING_DEF:
11992 63 : return 40;
11993 : case GF_SG_FIELD_CODING_OUT:
11994 0 : return 0;
11995 : case GF_SG_FIELD_CODING_DYN:
11996 0 : return 0;
11997 : default:
11998 46 : return 40;
11999 : }
12000 109 : }
12001 :
12002 : static GF_Err QuantizationParameter_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
12003 : {
12004 1460 : switch(IndexMode) {
12005 : case GF_SG_FIELD_CODING_DEF:
12006 730 : *allField = QuantizationParameter_Def2All[inField];
12007 730 : return GF_OK;
12008 : default:
12009 0 : return GF_BAD_PARAM;
12010 : }
12011 730 : }
12012 : static GF_Err QuantizationParameter_get_field(GF_Node *node, GF_FieldInfo *info)
12013 : {
12014 10620 : switch (info->fieldIndex) {
12015 : case 0:
12016 120 : info->name = "isLocal";
12017 120 : info->eventType = GF_SG_EVENT_FIELD;
12018 120 : info->fieldType = GF_SG_VRML_SFBOOL;
12019 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->isLocal;
12020 120 : return GF_OK;
12021 : case 1:
12022 120 : info->name = "position3DQuant";
12023 120 : info->eventType = GF_SG_EVENT_FIELD;
12024 120 : info->fieldType = GF_SG_VRML_SFBOOL;
12025 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->position3DQuant;
12026 120 : return GF_OK;
12027 : case 2:
12028 120 : info->name = "position3DMin";
12029 120 : info->eventType = GF_SG_EVENT_FIELD;
12030 120 : info->fieldType = GF_SG_VRML_SFVEC3F;
12031 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->position3DMin;
12032 120 : return GF_OK;
12033 : case 3:
12034 120 : info->name = "position3DMax";
12035 120 : info->eventType = GF_SG_EVENT_FIELD;
12036 120 : info->fieldType = GF_SG_VRML_SFVEC3F;
12037 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->position3DMax;
12038 120 : return GF_OK;
12039 : case 4:
12040 120 : info->name = "position3DNbBits";
12041 120 : info->eventType = GF_SG_EVENT_FIELD;
12042 120 : info->fieldType = GF_SG_VRML_SFINT32;
12043 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->position3DNbBits;
12044 120 : return GF_OK;
12045 : case 5:
12046 225 : info->name = "position2DQuant";
12047 225 : info->eventType = GF_SG_EVENT_FIELD;
12048 225 : info->fieldType = GF_SG_VRML_SFBOOL;
12049 225 : info->far_ptr = & ((M_QuantizationParameter *) node)->position2DQuant;
12050 225 : return GF_OK;
12051 : case 6:
12052 225 : info->name = "position2DMin";
12053 225 : info->eventType = GF_SG_EVENT_FIELD;
12054 225 : info->fieldType = GF_SG_VRML_SFVEC2F;
12055 225 : info->far_ptr = & ((M_QuantizationParameter *) node)->position2DMin;
12056 225 : return GF_OK;
12057 : case 7:
12058 225 : info->name = "position2DMax";
12059 225 : info->eventType = GF_SG_EVENT_FIELD;
12060 225 : info->fieldType = GF_SG_VRML_SFVEC2F;
12061 225 : info->far_ptr = & ((M_QuantizationParameter *) node)->position2DMax;
12062 225 : return GF_OK;
12063 : case 8:
12064 225 : info->name = "position2DNbBits";
12065 225 : info->eventType = GF_SG_EVENT_FIELD;
12066 225 : info->fieldType = GF_SG_VRML_SFINT32;
12067 225 : info->far_ptr = & ((M_QuantizationParameter *) node)->position2DNbBits;
12068 225 : return GF_OK;
12069 : case 9:
12070 120 : info->name = "drawOrderQuant";
12071 120 : info->eventType = GF_SG_EVENT_FIELD;
12072 120 : info->fieldType = GF_SG_VRML_SFBOOL;
12073 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->drawOrderQuant;
12074 120 : return GF_OK;
12075 : case 10:
12076 120 : info->name = "drawOrderMin";
12077 120 : info->eventType = GF_SG_EVENT_FIELD;
12078 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
12079 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->drawOrderMin;
12080 120 : return GF_OK;
12081 : case 11:
12082 120 : info->name = "drawOrderMax";
12083 120 : info->eventType = GF_SG_EVENT_FIELD;
12084 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
12085 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->drawOrderMax;
12086 120 : return GF_OK;
12087 : case 12:
12088 120 : info->name = "drawOrderNbBits";
12089 120 : info->eventType = GF_SG_EVENT_FIELD;
12090 120 : info->fieldType = GF_SG_VRML_SFINT32;
12091 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->drawOrderNbBits;
12092 120 : return GF_OK;
12093 : case 13:
12094 210 : info->name = "colorQuant";
12095 210 : info->eventType = GF_SG_EVENT_FIELD;
12096 210 : info->fieldType = GF_SG_VRML_SFBOOL;
12097 210 : info->far_ptr = & ((M_QuantizationParameter *) node)->colorQuant;
12098 210 : return GF_OK;
12099 : case 14:
12100 120 : info->name = "colorMin";
12101 120 : info->eventType = GF_SG_EVENT_FIELD;
12102 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
12103 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->colorMin;
12104 120 : return GF_OK;
12105 : case 15:
12106 120 : info->name = "colorMax";
12107 120 : info->eventType = GF_SG_EVENT_FIELD;
12108 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
12109 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->colorMax;
12110 120 : return GF_OK;
12111 : case 16:
12112 120 : info->name = "colorNbBits";
12113 120 : info->eventType = GF_SG_EVENT_FIELD;
12114 120 : info->fieldType = GF_SG_VRML_SFINT32;
12115 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->colorNbBits;
12116 120 : return GF_OK;
12117 : case 17:
12118 120 : info->name = "textureCoordinateQuant";
12119 120 : info->eventType = GF_SG_EVENT_FIELD;
12120 120 : info->fieldType = GF_SG_VRML_SFBOOL;
12121 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->textureCoordinateQuant;
12122 120 : return GF_OK;
12123 : case 18:
12124 120 : info->name = "textureCoordinateMin";
12125 120 : info->eventType = GF_SG_EVENT_FIELD;
12126 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
12127 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->textureCoordinateMin;
12128 120 : return GF_OK;
12129 : case 19:
12130 120 : info->name = "textureCoordinateMax";
12131 120 : info->eventType = GF_SG_EVENT_FIELD;
12132 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
12133 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->textureCoordinateMax;
12134 120 : return GF_OK;
12135 : case 20:
12136 120 : info->name = "textureCoordinateNbBits";
12137 120 : info->eventType = GF_SG_EVENT_FIELD;
12138 120 : info->fieldType = GF_SG_VRML_SFINT32;
12139 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->textureCoordinateNbBits;
12140 120 : return GF_OK;
12141 : case 21:
12142 120 : info->name = "angleQuant";
12143 120 : info->eventType = GF_SG_EVENT_FIELD;
12144 120 : info->fieldType = GF_SG_VRML_SFBOOL;
12145 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->angleQuant;
12146 120 : return GF_OK;
12147 : case 22:
12148 120 : info->name = "angleMin";
12149 120 : info->eventType = GF_SG_EVENT_FIELD;
12150 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
12151 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->angleMin;
12152 120 : return GF_OK;
12153 : case 23:
12154 120 : info->name = "angleMax";
12155 120 : info->eventType = GF_SG_EVENT_FIELD;
12156 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
12157 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->angleMax;
12158 120 : return GF_OK;
12159 : case 24:
12160 120 : info->name = "angleNbBits";
12161 120 : info->eventType = GF_SG_EVENT_FIELD;
12162 120 : info->fieldType = GF_SG_VRML_SFINT32;
12163 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->angleNbBits;
12164 120 : return GF_OK;
12165 : case 25:
12166 120 : info->name = "scaleQuant";
12167 120 : info->eventType = GF_SG_EVENT_FIELD;
12168 120 : info->fieldType = GF_SG_VRML_SFBOOL;
12169 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->scaleQuant;
12170 120 : return GF_OK;
12171 : case 26:
12172 120 : info->name = "scaleMin";
12173 120 : info->eventType = GF_SG_EVENT_FIELD;
12174 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
12175 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->scaleMin;
12176 120 : return GF_OK;
12177 : case 27:
12178 120 : info->name = "scaleMax";
12179 120 : info->eventType = GF_SG_EVENT_FIELD;
12180 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
12181 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->scaleMax;
12182 120 : return GF_OK;
12183 : case 28:
12184 120 : info->name = "scaleNbBits";
12185 120 : info->eventType = GF_SG_EVENT_FIELD;
12186 120 : info->fieldType = GF_SG_VRML_SFINT32;
12187 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->scaleNbBits;
12188 120 : return GF_OK;
12189 : case 29:
12190 120 : info->name = "keyQuant";
12191 120 : info->eventType = GF_SG_EVENT_FIELD;
12192 120 : info->fieldType = GF_SG_VRML_SFBOOL;
12193 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->keyQuant;
12194 120 : return GF_OK;
12195 : case 30:
12196 120 : info->name = "keyMin";
12197 120 : info->eventType = GF_SG_EVENT_FIELD;
12198 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
12199 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->keyMin;
12200 120 : return GF_OK;
12201 : case 31:
12202 120 : info->name = "keyMax";
12203 120 : info->eventType = GF_SG_EVENT_FIELD;
12204 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
12205 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->keyMax;
12206 120 : return GF_OK;
12207 : case 32:
12208 120 : info->name = "keyNbBits";
12209 120 : info->eventType = GF_SG_EVENT_FIELD;
12210 120 : info->fieldType = GF_SG_VRML_SFINT32;
12211 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->keyNbBits;
12212 120 : return GF_OK;
12213 : case 33:
12214 120 : info->name = "normalQuant";
12215 120 : info->eventType = GF_SG_EVENT_FIELD;
12216 120 : info->fieldType = GF_SG_VRML_SFBOOL;
12217 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->normalQuant;
12218 120 : return GF_OK;
12219 : case 34:
12220 120 : info->name = "normalNbBits";
12221 120 : info->eventType = GF_SG_EVENT_FIELD;
12222 120 : info->fieldType = GF_SG_VRML_SFINT32;
12223 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->normalNbBits;
12224 120 : return GF_OK;
12225 : case 35:
12226 120 : info->name = "sizeQuant";
12227 120 : info->eventType = GF_SG_EVENT_FIELD;
12228 120 : info->fieldType = GF_SG_VRML_SFBOOL;
12229 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->sizeQuant;
12230 120 : return GF_OK;
12231 : case 36:
12232 120 : info->name = "sizeMin";
12233 120 : info->eventType = GF_SG_EVENT_FIELD;
12234 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
12235 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->sizeMin;
12236 120 : return GF_OK;
12237 : case 37:
12238 120 : info->name = "sizeMax";
12239 120 : info->eventType = GF_SG_EVENT_FIELD;
12240 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
12241 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->sizeMax;
12242 120 : return GF_OK;
12243 : case 38:
12244 120 : info->name = "sizeNbBits";
12245 120 : info->eventType = GF_SG_EVENT_FIELD;
12246 120 : info->fieldType = GF_SG_VRML_SFINT32;
12247 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->sizeNbBits;
12248 120 : return GF_OK;
12249 : case 39:
12250 120 : info->name = "useEfficientCoding";
12251 120 : info->eventType = GF_SG_EVENT_FIELD;
12252 120 : info->fieldType = GF_SG_VRML_SFBOOL;
12253 120 : info->far_ptr = & ((M_QuantizationParameter *) node)->useEfficientCoding;
12254 120 : return GF_OK;
12255 : default:
12256 0 : return GF_BAD_PARAM;
12257 : }
12258 5310 : }
12259 :
12260 :
12261 : static s32 QuantizationParameter_get_field_index_by_name(char *name)
12262 : {
12263 272 : if (!strcmp("isLocal", name)) return 0;
12264 136 : if (!strcmp("position3DQuant", name)) return 1;
12265 136 : if (!strcmp("position3DMin", name)) return 2;
12266 136 : if (!strcmp("position3DMax", name)) return 3;
12267 136 : if (!strcmp("position3DNbBits", name)) return 4;
12268 164 : if (!strcmp("position2DQuant", name)) return 5;
12269 136 : if (!strcmp("position2DMin", name)) return 6;
12270 108 : if (!strcmp("position2DMax", name)) return 7;
12271 80 : if (!strcmp("position2DNbBits", name)) return 8;
12272 24 : if (!strcmp("drawOrderQuant", name)) return 9;
12273 24 : if (!strcmp("drawOrderMin", name)) return 10;
12274 24 : if (!strcmp("drawOrderMax", name)) return 11;
12275 24 : if (!strcmp("drawOrderNbBits", name)) return 12;
12276 48 : if (!strcmp("colorQuant", name)) return 13;
12277 0 : if (!strcmp("colorMin", name)) return 14;
12278 0 : if (!strcmp("colorMax", name)) return 15;
12279 0 : if (!strcmp("colorNbBits", name)) return 16;
12280 0 : if (!strcmp("textureCoordinateQuant", name)) return 17;
12281 0 : if (!strcmp("textureCoordinateMin", name)) return 18;
12282 0 : if (!strcmp("textureCoordinateMax", name)) return 19;
12283 0 : if (!strcmp("textureCoordinateNbBits", name)) return 20;
12284 0 : if (!strcmp("angleQuant", name)) return 21;
12285 0 : if (!strcmp("angleMin", name)) return 22;
12286 0 : if (!strcmp("angleMax", name)) return 23;
12287 0 : if (!strcmp("angleNbBits", name)) return 24;
12288 0 : if (!strcmp("scaleQuant", name)) return 25;
12289 0 : if (!strcmp("scaleMin", name)) return 26;
12290 0 : if (!strcmp("scaleMax", name)) return 27;
12291 0 : if (!strcmp("scaleNbBits", name)) return 28;
12292 0 : if (!strcmp("keyQuant", name)) return 29;
12293 0 : if (!strcmp("keyMin", name)) return 30;
12294 0 : if (!strcmp("keyMax", name)) return 31;
12295 0 : if (!strcmp("keyNbBits", name)) return 32;
12296 0 : if (!strcmp("normalQuant", name)) return 33;
12297 0 : if (!strcmp("normalNbBits", name)) return 34;
12298 0 : if (!strcmp("sizeQuant", name)) return 35;
12299 0 : if (!strcmp("sizeMin", name)) return 36;
12300 0 : if (!strcmp("sizeMax", name)) return 37;
12301 0 : if (!strcmp("sizeNbBits", name)) return 38;
12302 0 : if (!strcmp("useEfficientCoding", name)) return 39;
12303 0 : return -1;
12304 136 : }
12305 : static Bool QuantizationParameter_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
12306 : {
12307 0 : switch (FieldIndex) {
12308 : case 2:
12309 0 : *AType = 0;
12310 0 : *QType = 0;
12311 0 : *b_min = FIX_MIN;
12312 0 : *b_max = FIX_MAX;
12313 0 : return 1;
12314 : case 3:
12315 0 : *AType = 0;
12316 0 : *QType = 0;
12317 0 : *b_min = FIX_MIN;
12318 0 : *b_max = FIX_MAX;
12319 0 : return 1;
12320 : case 4:
12321 0 : *AType = 0;
12322 0 : *QType = 13;
12323 0 : *QT13_bits = 5;
12324 0 : *b_min = FLT2FIX(0);
12325 0 : *b_max = FLT2FIX(31);
12326 0 : return 1;
12327 : case 6:
12328 0 : *AType = 0;
12329 0 : *QType = 0;
12330 0 : *b_min = FIX_MIN;
12331 0 : *b_max = FIX_MAX;
12332 0 : return 1;
12333 : case 7:
12334 0 : *AType = 0;
12335 0 : *QType = 0;
12336 0 : *b_min = FIX_MIN;
12337 0 : *b_max = FIX_MAX;
12338 0 : return 1;
12339 : case 8:
12340 0 : *AType = 0;
12341 0 : *QType = 13;
12342 0 : *QT13_bits = 5;
12343 0 : *b_min = FLT2FIX(0);
12344 0 : *b_max = FLT2FIX(31);
12345 0 : return 1;
12346 : case 10:
12347 0 : *AType = 0;
12348 0 : *QType = 0;
12349 0 : *b_min = FIX_MIN;
12350 0 : *b_max = FIX_MAX;
12351 0 : return 1;
12352 : case 11:
12353 0 : *AType = 0;
12354 0 : *QType = 0;
12355 0 : *b_min = FIX_MIN;
12356 0 : *b_max = FIX_MAX;
12357 0 : return 1;
12358 : case 12:
12359 0 : *AType = 0;
12360 0 : *QType = 13;
12361 0 : *QT13_bits = 5;
12362 0 : *b_min = FLT2FIX(0);
12363 0 : *b_max = FLT2FIX(31);
12364 0 : return 1;
12365 : case 14:
12366 0 : *AType = 0;
12367 0 : *QType = 0;
12368 0 : *b_min = FLT2FIX(0);
12369 0 : *b_max = FLT2FIX(1);
12370 0 : return 1;
12371 : case 15:
12372 0 : *AType = 0;
12373 0 : *QType = 0;
12374 0 : *b_min = FLT2FIX(0);
12375 0 : *b_max = FLT2FIX(1);
12376 0 : return 1;
12377 : case 16:
12378 0 : *AType = 0;
12379 0 : *QType = 13;
12380 0 : *QT13_bits = 5;
12381 0 : *b_min = FLT2FIX(0);
12382 0 : *b_max = FLT2FIX(31);
12383 0 : return 1;
12384 : case 18:
12385 0 : *AType = 0;
12386 0 : *QType = 0;
12387 0 : *b_min = FLT2FIX(0);
12388 0 : *b_max = FLT2FIX(1);
12389 0 : return 1;
12390 : case 19:
12391 0 : *AType = 0;
12392 0 : *QType = 0;
12393 0 : *b_min = FLT2FIX(0);
12394 0 : *b_max = FLT2FIX(1);
12395 0 : return 1;
12396 : case 20:
12397 0 : *AType = 0;
12398 0 : *QType = 13;
12399 0 : *QT13_bits = 5;
12400 0 : *b_min = FLT2FIX(0);
12401 0 : *b_max = FLT2FIX(31);
12402 0 : return 1;
12403 : case 22:
12404 0 : *AType = 0;
12405 0 : *QType = 0;
12406 0 : *b_min = FLT2FIX(0);
12407 0 : *b_max = FLT2FIX(6.2831853);
12408 0 : return 1;
12409 : case 23:
12410 0 : *AType = 0;
12411 0 : *QType = 0;
12412 0 : *b_min = FLT2FIX(0);
12413 0 : *b_max = FLT2FIX(6.2831853);
12414 0 : return 1;
12415 : case 24:
12416 0 : *AType = 0;
12417 0 : *QType = 13;
12418 0 : *QT13_bits = 5;
12419 0 : *b_min = FLT2FIX(0);
12420 0 : *b_max = FLT2FIX(31);
12421 0 : return 1;
12422 : case 26:
12423 0 : *AType = 0;
12424 0 : *QType = 0;
12425 0 : *b_min = FIX_MIN;
12426 0 : *b_max = FIX_MAX;
12427 0 : return 1;
12428 : case 27:
12429 0 : *AType = 0;
12430 0 : *QType = 0;
12431 0 : *b_min = FIX_MIN;
12432 0 : *b_max = FIX_MAX;
12433 0 : return 1;
12434 : case 28:
12435 0 : *AType = 0;
12436 0 : *QType = 13;
12437 0 : *QT13_bits = 5;
12438 0 : *b_min = FLT2FIX(0);
12439 0 : *b_max = FLT2FIX(31);
12440 0 : return 1;
12441 : case 30:
12442 0 : *AType = 0;
12443 0 : *QType = 0;
12444 0 : *b_min = FIX_MIN;
12445 0 : *b_max = FIX_MAX;
12446 0 : return 1;
12447 : case 31:
12448 0 : *AType = 0;
12449 0 : *QType = 0;
12450 0 : *b_min = FIX_MIN;
12451 0 : *b_max = FIX_MAX;
12452 0 : return 1;
12453 : case 32:
12454 0 : *AType = 0;
12455 0 : *QType = 13;
12456 0 : *QT13_bits = 5;
12457 0 : *b_min = FLT2FIX(0);
12458 0 : *b_max = FLT2FIX(31);
12459 0 : return 1;
12460 : case 34:
12461 0 : *AType = 0;
12462 0 : *QType = 13;
12463 0 : *QT13_bits = 5;
12464 0 : *b_min = FLT2FIX(0);
12465 0 : *b_max = FLT2FIX(31);
12466 0 : return 1;
12467 : case 36:
12468 0 : *AType = 0;
12469 0 : *QType = 0;
12470 0 : *b_min = FIX_MIN;
12471 0 : *b_max = FIX_MAX;
12472 0 : return 1;
12473 : case 37:
12474 0 : *AType = 0;
12475 0 : *QType = 0;
12476 0 : *b_min = FIX_MIN;
12477 0 : *b_max = FIX_MAX;
12478 0 : return 1;
12479 : case 38:
12480 0 : *AType = 0;
12481 0 : *QType = 13;
12482 0 : *QT13_bits = 5;
12483 0 : *b_min = FLT2FIX(0);
12484 0 : *b_max = FLT2FIX(31);
12485 0 : return 1;
12486 : default:
12487 0 : return 0;
12488 : }
12489 0 : }
12490 :
12491 :
12492 :
12493 : GF_Node *QuantizationParameter_Create()
12494 : {
12495 : M_QuantizationParameter *p;
12496 369 : GF_SAFEALLOC(p, M_QuantizationParameter);
12497 123 : if(!p) return NULL;
12498 123 : gf_node_setup((GF_Node *)p, TAG_MPEG4_QuantizationParameter);
12499 :
12500 : /*default field values*/
12501 123 : p->position3DMin.x = FIX_MIN;
12502 123 : p->position3DMin.y = FIX_MIN;
12503 123 : p->position3DMin.z = FIX_MIN;
12504 123 : p->position3DMax.x = FIX_MAX;
12505 123 : p->position3DMax.y = FIX_MAX;
12506 123 : p->position3DMax.z = FIX_MAX;
12507 123 : p->position3DNbBits = 16;
12508 123 : p->position2DMin.x = FIX_MIN;
12509 123 : p->position2DMin.y = FIX_MIN;
12510 123 : p->position2DMax.x = FIX_MAX;
12511 123 : p->position2DMax.y = FIX_MAX;
12512 123 : p->position2DNbBits = 16;
12513 123 : p->drawOrderMin = FIX_MIN;
12514 123 : p->drawOrderMax = FIX_MAX;
12515 123 : p->drawOrderNbBits = 8;
12516 123 : p->colorQuant = 1;
12517 123 : p->colorMin = FLT2FIX(0.0);
12518 123 : p->colorMax = FLT2FIX(1.0);
12519 123 : p->colorNbBits = 8;
12520 123 : p->textureCoordinateQuant = 1;
12521 123 : p->textureCoordinateMin = FLT2FIX(0);
12522 123 : p->textureCoordinateMax = FLT2FIX(1);
12523 123 : p->textureCoordinateNbBits = 16;
12524 123 : p->angleQuant = 1;
12525 123 : p->angleMin = FLT2FIX(0.0);
12526 123 : p->angleMax = FLT2FIX(6.2831853);
12527 123 : p->angleNbBits = 16;
12528 123 : p->scaleMin = FLT2FIX(0.0);
12529 123 : p->scaleMax = FIX_MAX;
12530 123 : p->scaleNbBits = 8;
12531 123 : p->keyQuant = 1;
12532 123 : p->keyMin = FLT2FIX(0.0);
12533 123 : p->keyMax = FLT2FIX(1.0);
12534 123 : p->keyNbBits = 8;
12535 123 : p->normalQuant = 1;
12536 123 : p->normalNbBits = 8;
12537 123 : p->sizeMin = FLT2FIX(0);
12538 123 : p->sizeMax = FIX_MAX;
12539 123 : p->sizeNbBits = 8;
12540 123 : return (GF_Node *)p;
12541 123 : }
12542 :
12543 :
12544 : /*
12545 : Rectangle Node deletion
12546 : */
12547 :
12548 : static void Rectangle_Del(GF_Node *node)
12549 : {
12550 14270 : M_Rectangle *p = (M_Rectangle *) node;
12551 7135 : gf_node_free((GF_Node *) p);
12552 7135 : }
12553 :
12554 : static const u16 Rectangle_Def2All[] = { 0};
12555 : static const u16 Rectangle_In2All[] = { 0};
12556 : static const u16 Rectangle_Out2All[] = { 0};
12557 : static const u16 Rectangle_Dyn2All[] = { 0};
12558 :
12559 : static u32 Rectangle_get_field_count(GF_Node *node, u8 IndexMode)
12560 : {
12561 13010 : switch(IndexMode) {
12562 : case GF_SG_FIELD_CODING_IN:
12563 0 : return 1;
12564 : case GF_SG_FIELD_CODING_DEF:
12565 2200 : return 1;
12566 : case GF_SG_FIELD_CODING_OUT:
12567 0 : return 1;
12568 : case GF_SG_FIELD_CODING_DYN:
12569 0 : return 1;
12570 : default:
12571 4305 : return 1;
12572 : }
12573 6505 : }
12574 :
12575 : static GF_Err Rectangle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
12576 : {
12577 3392 : switch(IndexMode) {
12578 : case GF_SG_FIELD_CODING_IN:
12579 0 : *allField = Rectangle_In2All[inField];
12580 0 : return GF_OK;
12581 : case GF_SG_FIELD_CODING_DEF:
12582 1696 : *allField = Rectangle_Def2All[inField];
12583 1696 : return GF_OK;
12584 : case GF_SG_FIELD_CODING_OUT:
12585 0 : *allField = Rectangle_Out2All[inField];
12586 0 : return GF_OK;
12587 : case GF_SG_FIELD_CODING_DYN:
12588 0 : *allField = Rectangle_Dyn2All[inField];
12589 0 : return GF_OK;
12590 : default:
12591 0 : return GF_BAD_PARAM;
12592 : }
12593 1696 : }
12594 : static GF_Err Rectangle_get_field(GF_Node *node, GF_FieldInfo *info)
12595 : {
12596 26484 : switch (info->fieldIndex) {
12597 : case 0:
12598 13242 : info->name = "size";
12599 13242 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
12600 13242 : info->fieldType = GF_SG_VRML_SFVEC2F;
12601 13242 : info->far_ptr = & ((M_Rectangle *) node)->size;
12602 13242 : return GF_OK;
12603 : default:
12604 0 : return GF_BAD_PARAM;
12605 : }
12606 13242 : }
12607 :
12608 :
12609 : static s32 Rectangle_get_field_index_by_name(char *name)
12610 : {
12611 2967 : if (!strcmp("size", name)) return 0;
12612 0 : return -1;
12613 989 : }
12614 : static Bool Rectangle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
12615 : {
12616 0 : switch (FieldIndex) {
12617 : case 0:
12618 0 : *AType = 2;
12619 0 : *QType = 12;
12620 0 : *b_min = FLT2FIX(0);
12621 0 : *b_max = FIX_MAX;
12622 0 : return 1;
12623 : default:
12624 0 : return 0;
12625 : }
12626 0 : }
12627 :
12628 :
12629 :
12630 : GF_Node *Rectangle_Create()
12631 : {
12632 : M_Rectangle *p;
12633 21405 : GF_SAFEALLOC(p, M_Rectangle);
12634 7135 : if(!p) return NULL;
12635 7135 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Rectangle);
12636 :
12637 : /*default field values*/
12638 7135 : p->size.x = FLT2FIX(2);
12639 7135 : p->size.y = FLT2FIX(2);
12640 7135 : return (GF_Node *)p;
12641 7135 : }
12642 :
12643 :
12644 : /*
12645 : ScalarInterpolator Node deletion
12646 : */
12647 :
12648 : static void ScalarInterpolator_Del(GF_Node *node)
12649 : {
12650 1518 : M_ScalarInterpolator *p = (M_ScalarInterpolator *) node;
12651 759 : gf_sg_mffloat_del(p->key);
12652 759 : gf_sg_mffloat_del(p->keyValue);
12653 759 : gf_node_free((GF_Node *) p);
12654 759 : }
12655 :
12656 : static const u16 ScalarInterpolator_Def2All[] = { 1, 2};
12657 : static const u16 ScalarInterpolator_In2All[] = { 0, 1, 2};
12658 : static const u16 ScalarInterpolator_Out2All[] = { 1, 2, 3};
12659 :
12660 : static u32 ScalarInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
12661 : {
12662 3028 : switch(IndexMode) {
12663 : case GF_SG_FIELD_CODING_IN:
12664 378 : return 3;
12665 : case GF_SG_FIELD_CODING_DEF:
12666 364 : return 2;
12667 : case GF_SG_FIELD_CODING_OUT:
12668 459 : return 3;
12669 : case GF_SG_FIELD_CODING_DYN:
12670 0 : return 0;
12671 : default:
12672 313 : return 4;
12673 : }
12674 1514 : }
12675 :
12676 : static GF_Err ScalarInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
12677 : {
12678 2830 : switch(IndexMode) {
12679 : case GF_SG_FIELD_CODING_IN:
12680 294 : *allField = ScalarInterpolator_In2All[inField];
12681 294 : return GF_OK;
12682 : case GF_SG_FIELD_CODING_DEF:
12683 560 : *allField = ScalarInterpolator_Def2All[inField];
12684 560 : return GF_OK;
12685 : case GF_SG_FIELD_CODING_OUT:
12686 561 : *allField = ScalarInterpolator_Out2All[inField];
12687 561 : return GF_OK;
12688 : default:
12689 0 : return GF_BAD_PARAM;
12690 : }
12691 1415 : }
12692 : static GF_Err ScalarInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
12693 : {
12694 8236 : switch (info->fieldIndex) {
12695 : case 0:
12696 635 : info->name = "set_fraction";
12697 635 : info->eventType = GF_SG_EVENT_IN;
12698 635 : info->on_event_in = ((M_ScalarInterpolator *)node)->on_set_fraction;
12699 635 : info->fieldType = GF_SG_VRML_SFFLOAT;
12700 635 : info->far_ptr = & ((M_ScalarInterpolator *) node)->set_fraction;
12701 635 : return GF_OK;
12702 : case 1:
12703 1388 : info->name = "key";
12704 1388 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
12705 1388 : info->fieldType = GF_SG_VRML_MFFLOAT;
12706 1388 : info->far_ptr = & ((M_ScalarInterpolator *) node)->key;
12707 1388 : return GF_OK;
12708 : case 2:
12709 1388 : info->name = "keyValue";
12710 1388 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
12711 1388 : info->fieldType = GF_SG_VRML_MFFLOAT;
12712 1388 : info->far_ptr = & ((M_ScalarInterpolator *) node)->keyValue;
12713 1388 : return GF_OK;
12714 : case 3:
12715 707 : info->name = "value_changed";
12716 707 : info->eventType = GF_SG_EVENT_OUT;
12717 707 : info->fieldType = GF_SG_VRML_SFFLOAT;
12718 707 : info->far_ptr = & ((M_ScalarInterpolator *) node)->value_changed;
12719 707 : return GF_OK;
12720 : default:
12721 0 : return GF_BAD_PARAM;
12722 : }
12723 4118 : }
12724 :
12725 :
12726 : static s32 ScalarInterpolator_get_field_index_by_name(char *name)
12727 : {
12728 1584 : if (!strcmp("set_fraction", name)) return 0;
12729 708 : if (!strcmp("key", name)) return 1;
12730 540 : if (!strcmp("keyValue", name)) return 2;
12731 408 : if (!strcmp("value_changed", name)) return 3;
12732 0 : return -1;
12733 708 : }
12734 : static Bool ScalarInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
12735 : {
12736 0 : switch (FieldIndex) {
12737 : case 1:
12738 0 : *AType = 0;
12739 0 : *QType = 8;
12740 0 : *b_min = FLT2FIX(0);
12741 0 : *b_max = FLT2FIX(1);
12742 0 : return 1;
12743 : case 2:
12744 0 : *AType = 0;
12745 0 : *QType = 0;
12746 0 : *b_min = FIX_MIN;
12747 0 : *b_max = FIX_MAX;
12748 0 : return 1;
12749 : default:
12750 0 : return 0;
12751 : }
12752 0 : }
12753 :
12754 :
12755 :
12756 : GF_Node *ScalarInterpolator_Create()
12757 : {
12758 : M_ScalarInterpolator *p;
12759 2277 : GF_SAFEALLOC(p, M_ScalarInterpolator);
12760 759 : if(!p) return NULL;
12761 759 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ScalarInterpolator);
12762 :
12763 : /*default field values*/
12764 759 : return (GF_Node *)p;
12765 759 : }
12766 :
12767 :
12768 : /*
12769 : Script Node deletion
12770 : */
12771 :
12772 : static void Script_Del(GF_Node *node)
12773 : {
12774 818 : M_Script *p = (M_Script *) node;
12775 409 : gf_sg_mfscript_del(p->url);
12776 409 : gf_node_free((GF_Node *) p);
12777 409 : }
12778 :
12779 : static const u16 Script_Def2All[] = { 0, 1, 2};
12780 : static const u16 Script_In2All[] = { 0};
12781 : static const u16 Script_Out2All[] = { 0};
12782 :
12783 : static u32 Script_get_field_count(GF_Node *node, u8 IndexMode)
12784 : {
12785 0 : switch(IndexMode) {
12786 : case GF_SG_FIELD_CODING_IN:
12787 0 : return 1;
12788 : case GF_SG_FIELD_CODING_DEF:
12789 0 : return 3;
12790 : case GF_SG_FIELD_CODING_OUT:
12791 0 : return 1;
12792 : case GF_SG_FIELD_CODING_DYN:
12793 0 : return 0;
12794 : default:
12795 0 : return 3;
12796 : }
12797 0 : }
12798 :
12799 : static GF_Err Script_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
12800 : {
12801 2058 : switch(IndexMode) {
12802 : case GF_SG_FIELD_CODING_IN:
12803 706 : *allField = Script_In2All[inField];
12804 706 : return GF_OK;
12805 : case GF_SG_FIELD_CODING_DEF:
12806 303 : *allField = Script_Def2All[inField];
12807 303 : return GF_OK;
12808 : case GF_SG_FIELD_CODING_OUT:
12809 20 : *allField = Script_Out2All[inField];
12810 20 : return GF_OK;
12811 : default:
12812 0 : return GF_BAD_PARAM;
12813 : }
12814 1029 : }
12815 : static GF_Err Script_get_field(GF_Node *node, GF_FieldInfo *info)
12816 : {
12817 19862 : switch (info->fieldIndex) {
12818 : case 0:
12819 3527 : info->name = "url";
12820 3527 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
12821 3527 : info->fieldType = GF_SG_VRML_MFSCRIPT;
12822 3527 : info->far_ptr = & ((M_Script *) node)->url;
12823 3527 : return GF_OK;
12824 : case 1:
12825 3202 : info->name = "directOutput";
12826 3202 : info->eventType = GF_SG_EVENT_FIELD;
12827 3202 : info->fieldType = GF_SG_VRML_SFBOOL;
12828 3202 : info->far_ptr = & ((M_Script *) node)->directOutput;
12829 3202 : return GF_OK;
12830 : case 2:
12831 3202 : info->name = "mustEvaluate";
12832 3202 : info->eventType = GF_SG_EVENT_FIELD;
12833 3202 : info->fieldType = GF_SG_VRML_SFBOOL;
12834 3202 : info->far_ptr = & ((M_Script *) node)->mustEvaluate;
12835 3202 : return GF_OK;
12836 : default:
12837 0 : return GF_BAD_PARAM;
12838 : }
12839 9931 : }
12840 :
12841 :
12842 : static s32 Script_get_field_index_by_name(char *name)
12843 : {
12844 0 : if (!strcmp("url", name)) return 0;
12845 0 : if (!strcmp("directOutput", name)) return 1;
12846 0 : if (!strcmp("mustEvaluate", name)) return 2;
12847 0 : return -1;
12848 0 : }
12849 : static Bool Script_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
12850 : {
12851 : switch (FieldIndex) {
12852 : default:
12853 0 : return 0;
12854 : }
12855 : }
12856 :
12857 :
12858 :
12859 : GF_Node *Script_Create()
12860 : {
12861 : M_Script *p;
12862 1227 : GF_SAFEALLOC(p, M_Script);
12863 409 : if(!p) return NULL;
12864 409 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Script);
12865 :
12866 : /*default field values*/
12867 409 : return (GF_Node *)p;
12868 409 : }
12869 :
12870 :
12871 : /*
12872 : Shape Node deletion
12873 : */
12874 :
12875 : static void Shape_Del(GF_Node *node)
12876 : {
12877 64742 : M_Shape *p = (M_Shape *) node;
12878 32371 : gf_node_unregister((GF_Node *) p->appearance, (GF_Node *) p);
12879 32371 : gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
12880 32371 : gf_node_free((GF_Node *) p);
12881 32371 : }
12882 :
12883 : static const u16 Shape_Def2All[] = { 0, 1};
12884 : static const u16 Shape_In2All[] = { 0, 1};
12885 : static const u16 Shape_Out2All[] = { 0, 1};
12886 :
12887 : static u32 Shape_get_field_count(GF_Node *node, u8 IndexMode)
12888 : {
12889 56168 : switch(IndexMode) {
12890 : case GF_SG_FIELD_CODING_IN:
12891 0 : return 2;
12892 : case GF_SG_FIELD_CODING_DEF:
12893 13306 : return 2;
12894 : case GF_SG_FIELD_CODING_OUT:
12895 0 : return 2;
12896 : case GF_SG_FIELD_CODING_DYN:
12897 0 : return 0;
12898 : default:
12899 14778 : return 2;
12900 : }
12901 28084 : }
12902 :
12903 : static GF_Err Shape_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
12904 : {
12905 39208 : switch(IndexMode) {
12906 : case GF_SG_FIELD_CODING_IN:
12907 0 : *allField = Shape_In2All[inField];
12908 0 : return GF_OK;
12909 : case GF_SG_FIELD_CODING_DEF:
12910 19604 : *allField = Shape_Def2All[inField];
12911 19604 : return GF_OK;
12912 : case GF_SG_FIELD_CODING_OUT:
12913 0 : *allField = Shape_Out2All[inField];
12914 0 : return GF_OK;
12915 : default:
12916 0 : return GF_BAD_PARAM;
12917 : }
12918 19604 : }
12919 : static GF_Err Shape_get_field(GF_Node *node, GF_FieldInfo *info)
12920 : {
12921 158104 : switch (info->fieldIndex) {
12922 : case 0:
12923 38921 : info->name = "appearance";
12924 38921 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
12925 38921 : info->fieldType = GF_SG_VRML_SFNODE;
12926 38921 : info->NDTtype = NDT_SFAppearanceNode;
12927 38921 : info->far_ptr = & ((M_Shape *)node)->appearance;
12928 38921 : return GF_OK;
12929 : case 1:
12930 40131 : info->name = "geometry";
12931 40131 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
12932 40131 : info->fieldType = GF_SG_VRML_SFNODE;
12933 40131 : info->NDTtype = NDT_SFGeometryNode;
12934 40131 : info->far_ptr = & ((M_Shape *)node)->geometry;
12935 40131 : return GF_OK;
12936 : default:
12937 0 : return GF_BAD_PARAM;
12938 : }
12939 79052 : }
12940 :
12941 :
12942 : static s32 Shape_get_field_index_by_name(char *name)
12943 : {
12944 30575 : if (!strcmp("appearance", name)) return 0;
12945 13400 : if (!strcmp("geometry", name)) return 1;
12946 0 : return -1;
12947 12425 : }
12948 : static Bool Shape_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
12949 : {
12950 : switch (FieldIndex) {
12951 : default:
12952 0 : return 0;
12953 : }
12954 : }
12955 :
12956 :
12957 :
12958 : GF_Node *Shape_Create()
12959 : {
12960 : M_Shape *p;
12961 97113 : GF_SAFEALLOC(p, M_Shape);
12962 32371 : if(!p) return NULL;
12963 32371 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Shape);
12964 :
12965 : /*default field values*/
12966 32371 : return (GF_Node *)p;
12967 32371 : }
12968 :
12969 :
12970 : /*
12971 : Sound Node deletion
12972 : */
12973 :
12974 : static void Sound_Del(GF_Node *node)
12975 : {
12976 72 : M_Sound *p = (M_Sound *) node;
12977 36 : gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
12978 36 : gf_node_free((GF_Node *) p);
12979 36 : }
12980 :
12981 : static const u16 Sound_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
12982 : static const u16 Sound_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
12983 : static const u16 Sound_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
12984 : static const u16 Sound_Dyn2All[] = { 1, 2, 3, 4, 5, 6};
12985 :
12986 : static u32 Sound_get_field_count(GF_Node *node, u8 IndexMode)
12987 : {
12988 64 : switch(IndexMode) {
12989 : case GF_SG_FIELD_CODING_IN:
12990 0 : return 9;
12991 : case GF_SG_FIELD_CODING_DEF:
12992 18 : return 10;
12993 : case GF_SG_FIELD_CODING_OUT:
12994 0 : return 9;
12995 : case GF_SG_FIELD_CODING_DYN:
12996 0 : return 6;
12997 : default:
12998 14 : return 10;
12999 : }
13000 32 : }
13001 :
13002 : static GF_Err Sound_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
13003 : {
13004 130 : switch(IndexMode) {
13005 : case GF_SG_FIELD_CODING_IN:
13006 0 : *allField = Sound_In2All[inField];
13007 0 : return GF_OK;
13008 : case GF_SG_FIELD_CODING_DEF:
13009 65 : *allField = Sound_Def2All[inField];
13010 65 : return GF_OK;
13011 : case GF_SG_FIELD_CODING_OUT:
13012 0 : *allField = Sound_Out2All[inField];
13013 0 : return GF_OK;
13014 : case GF_SG_FIELD_CODING_DYN:
13015 0 : *allField = Sound_Dyn2All[inField];
13016 0 : return GF_OK;
13017 : default:
13018 0 : return GF_BAD_PARAM;
13019 : }
13020 65 : }
13021 : static GF_Err Sound_get_field(GF_Node *node, GF_FieldInfo *info)
13022 : {
13023 838 : switch (info->fieldIndex) {
13024 : case 0:
13025 36 : info->name = "direction";
13026 36 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13027 36 : info->fieldType = GF_SG_VRML_SFVEC3F;
13028 36 : info->far_ptr = & ((M_Sound *) node)->direction;
13029 36 : return GF_OK;
13030 : case 1:
13031 36 : info->name = "intensity";
13032 36 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13033 36 : info->fieldType = GF_SG_VRML_SFFLOAT;
13034 36 : info->far_ptr = & ((M_Sound *) node)->intensity;
13035 36 : return GF_OK;
13036 : case 2:
13037 66 : info->name = "location";
13038 66 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13039 66 : info->fieldType = GF_SG_VRML_SFVEC3F;
13040 66 : info->far_ptr = & ((M_Sound *) node)->location;
13041 66 : return GF_OK;
13042 : case 3:
13043 36 : info->name = "maxBack";
13044 36 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13045 36 : info->fieldType = GF_SG_VRML_SFFLOAT;
13046 36 : info->far_ptr = & ((M_Sound *) node)->maxBack;
13047 36 : return GF_OK;
13048 : case 4:
13049 36 : info->name = "maxFront";
13050 36 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13051 36 : info->fieldType = GF_SG_VRML_SFFLOAT;
13052 36 : info->far_ptr = & ((M_Sound *) node)->maxFront;
13053 36 : return GF_OK;
13054 : case 5:
13055 36 : info->name = "minBack";
13056 36 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13057 36 : info->fieldType = GF_SG_VRML_SFFLOAT;
13058 36 : info->far_ptr = & ((M_Sound *) node)->minBack;
13059 36 : return GF_OK;
13060 : case 6:
13061 36 : info->name = "minFront";
13062 36 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13063 36 : info->fieldType = GF_SG_VRML_SFFLOAT;
13064 36 : info->far_ptr = & ((M_Sound *) node)->minFront;
13065 36 : return GF_OK;
13066 : case 7:
13067 36 : info->name = "priority";
13068 36 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13069 36 : info->fieldType = GF_SG_VRML_SFFLOAT;
13070 36 : info->far_ptr = & ((M_Sound *) node)->priority;
13071 36 : return GF_OK;
13072 : case 8:
13073 48 : info->name = "source";
13074 48 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13075 48 : info->fieldType = GF_SG_VRML_SFNODE;
13076 48 : info->NDTtype = NDT_SFAudioNode;
13077 48 : info->far_ptr = & ((M_Sound *)node)->source;
13078 48 : return GF_OK;
13079 : case 9:
13080 53 : info->name = "spatialize";
13081 53 : info->eventType = GF_SG_EVENT_FIELD;
13082 53 : info->fieldType = GF_SG_VRML_SFBOOL;
13083 53 : info->far_ptr = & ((M_Sound *) node)->spatialize;
13084 53 : return GF_OK;
13085 : default:
13086 0 : return GF_BAD_PARAM;
13087 : }
13088 419 : }
13089 :
13090 :
13091 : static s32 Sound_get_field_index_by_name(char *name)
13092 : {
13093 44 : if (!strcmp("direction", name)) return 0;
13094 22 : if (!strcmp("intensity", name)) return 1;
13095 30 : if (!strcmp("location", name)) return 2;
13096 14 : if (!strcmp("maxBack", name)) return 3;
13097 14 : if (!strcmp("maxFront", name)) return 4;
13098 14 : if (!strcmp("minBack", name)) return 5;
13099 14 : if (!strcmp("minFront", name)) return 6;
13100 14 : if (!strcmp("priority", name)) return 7;
13101 22 : if (!strcmp("source", name)) return 8;
13102 12 : if (!strcmp("spatialize", name)) return 9;
13103 0 : return -1;
13104 22 : }
13105 : static Bool Sound_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
13106 : {
13107 0 : switch (FieldIndex) {
13108 : case 0:
13109 0 : *AType = 0;
13110 0 : *QType = 9;
13111 0 : *b_min = FIX_MIN;
13112 0 : *b_max = FIX_MAX;
13113 0 : return 1;
13114 : case 1:
13115 0 : *AType = 7;
13116 0 : *QType = 4;
13117 0 : *b_min = FLT2FIX(0);
13118 0 : *b_max = FLT2FIX(1);
13119 0 : return 1;
13120 : case 2:
13121 0 : *AType = 1;
13122 0 : *QType = 1;
13123 0 : *b_min = FIX_MIN;
13124 0 : *b_max = FIX_MAX;
13125 0 : return 1;
13126 : case 3:
13127 0 : *AType = 7;
13128 0 : *QType = 11;
13129 0 : *b_min = FLT2FIX(0);
13130 0 : *b_max = FIX_MAX;
13131 0 : return 1;
13132 : case 4:
13133 0 : *AType = 7;
13134 0 : *QType = 11;
13135 0 : *b_min = FLT2FIX(0);
13136 0 : *b_max = FIX_MAX;
13137 0 : return 1;
13138 : case 5:
13139 0 : *AType = 7;
13140 0 : *QType = 11;
13141 0 : *b_min = FLT2FIX(0);
13142 0 : *b_max = FIX_MAX;
13143 0 : return 1;
13144 : case 6:
13145 0 : *AType = 7;
13146 0 : *QType = 11;
13147 0 : *b_min = FLT2FIX(0);
13148 0 : *b_max = FIX_MAX;
13149 0 : return 1;
13150 : case 7:
13151 0 : *AType = 0;
13152 0 : *QType = 4;
13153 0 : *b_min = FLT2FIX(0);
13154 0 : *b_max = FLT2FIX(1);
13155 0 : return 1;
13156 : default:
13157 0 : return 0;
13158 : }
13159 0 : }
13160 :
13161 :
13162 :
13163 : GF_Node *Sound_Create()
13164 : {
13165 : M_Sound *p;
13166 108 : GF_SAFEALLOC(p, M_Sound);
13167 36 : if(!p) return NULL;
13168 36 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Sound);
13169 :
13170 : /*default field values*/
13171 36 : p->direction.x = FLT2FIX(0);
13172 36 : p->direction.y = FLT2FIX(0);
13173 36 : p->direction.z = FLT2FIX(1);
13174 36 : p->intensity = FLT2FIX(1);
13175 36 : p->location.x = FLT2FIX(0);
13176 36 : p->location.y = FLT2FIX(0);
13177 36 : p->location.z = FLT2FIX(0);
13178 36 : p->maxBack = FLT2FIX(10);
13179 36 : p->maxFront = FLT2FIX(10);
13180 36 : p->minBack = FLT2FIX(1);
13181 36 : p->minFront = FLT2FIX(1);
13182 36 : p->priority = FLT2FIX(0);
13183 36 : p->spatialize = 1;
13184 36 : return (GF_Node *)p;
13185 36 : }
13186 :
13187 :
13188 : /*
13189 : Sound2D Node deletion
13190 : */
13191 :
13192 : static void Sound2D_Del(GF_Node *node)
13193 : {
13194 362 : M_Sound2D *p = (M_Sound2D *) node;
13195 181 : gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
13196 181 : gf_node_free((GF_Node *) p);
13197 181 : }
13198 :
13199 : static const u16 Sound2D_Def2All[] = { 0, 1, 2, 3};
13200 : static const u16 Sound2D_In2All[] = { 0, 1, 2};
13201 : static const u16 Sound2D_Out2All[] = { 0, 1, 2};
13202 : static const u16 Sound2D_Dyn2All[] = { 0, 1};
13203 :
13204 : static u32 Sound2D_get_field_count(GF_Node *node, u8 IndexMode)
13205 : {
13206 322 : switch(IndexMode) {
13207 : case GF_SG_FIELD_CODING_IN:
13208 0 : return 3;
13209 : case GF_SG_FIELD_CODING_DEF:
13210 85 : return 4;
13211 : case GF_SG_FIELD_CODING_OUT:
13212 0 : return 3;
13213 : case GF_SG_FIELD_CODING_DYN:
13214 0 : return 2;
13215 : default:
13216 76 : return 4;
13217 : }
13218 161 : }
13219 :
13220 : static GF_Err Sound2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
13221 : {
13222 242 : switch(IndexMode) {
13223 : case GF_SG_FIELD_CODING_IN:
13224 0 : *allField = Sound2D_In2All[inField];
13225 0 : return GF_OK;
13226 : case GF_SG_FIELD_CODING_DEF:
13227 121 : *allField = Sound2D_Def2All[inField];
13228 121 : return GF_OK;
13229 : case GF_SG_FIELD_CODING_OUT:
13230 0 : *allField = Sound2D_Out2All[inField];
13231 0 : return GF_OK;
13232 : case GF_SG_FIELD_CODING_DYN:
13233 0 : *allField = Sound2D_Dyn2All[inField];
13234 0 : return GF_OK;
13235 : default:
13236 0 : return GF_BAD_PARAM;
13237 : }
13238 121 : }
13239 : static GF_Err Sound2D_get_field(GF_Node *node, GF_FieldInfo *info)
13240 : {
13241 1564 : switch (info->fieldIndex) {
13242 : case 0:
13243 190 : info->name = "intensity";
13244 190 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13245 190 : info->fieldType = GF_SG_VRML_SFFLOAT;
13246 190 : info->far_ptr = & ((M_Sound2D *) node)->intensity;
13247 190 : return GF_OK;
13248 : case 1:
13249 176 : info->name = "location";
13250 176 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13251 176 : info->fieldType = GF_SG_VRML_SFVEC2F;
13252 176 : info->far_ptr = & ((M_Sound2D *) node)->location;
13253 176 : return GF_OK;
13254 : case 2:
13255 240 : info->name = "source";
13256 240 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13257 240 : info->fieldType = GF_SG_VRML_SFNODE;
13258 240 : info->NDTtype = NDT_SFAudioNode;
13259 240 : info->far_ptr = & ((M_Sound2D *)node)->source;
13260 240 : return GF_OK;
13261 : case 3:
13262 176 : info->name = "spatialize";
13263 176 : info->eventType = GF_SG_EVENT_FIELD;
13264 176 : info->fieldType = GF_SG_VRML_SFBOOL;
13265 176 : info->far_ptr = & ((M_Sound2D *) node)->spatialize;
13266 176 : return GF_OK;
13267 : default:
13268 0 : return GF_BAD_PARAM;
13269 : }
13270 782 : }
13271 :
13272 :
13273 : static s32 Sound2D_get_field_index_by_name(char *name)
13274 : {
13275 94 : if (!strcmp("intensity", name)) return 0;
13276 41 : if (!strcmp("location", name)) return 1;
13277 82 : if (!strcmp("source", name)) return 2;
13278 0 : if (!strcmp("spatialize", name)) return 3;
13279 0 : return -1;
13280 45 : }
13281 : static Bool Sound2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
13282 : {
13283 0 : switch (FieldIndex) {
13284 : case 0:
13285 0 : *AType = 7;
13286 0 : *QType = 4;
13287 0 : *b_min = FLT2FIX(0);
13288 0 : *b_max = FLT2FIX(1);
13289 0 : return 1;
13290 : case 1:
13291 0 : *AType = 2;
13292 0 : *QType = 2;
13293 0 : *b_min = FIX_MIN;
13294 0 : *b_max = FIX_MAX;
13295 0 : return 1;
13296 : default:
13297 0 : return 0;
13298 : }
13299 0 : }
13300 :
13301 :
13302 :
13303 : GF_Node *Sound2D_Create()
13304 : {
13305 : M_Sound2D *p;
13306 543 : GF_SAFEALLOC(p, M_Sound2D);
13307 181 : if(!p) return NULL;
13308 181 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Sound2D);
13309 :
13310 : /*default field values*/
13311 181 : p->intensity = FLT2FIX(1);
13312 181 : p->location.x = FLT2FIX(0);
13313 181 : p->location.y = FLT2FIX(0);
13314 181 : p->spatialize = 1;
13315 181 : return (GF_Node *)p;
13316 181 : }
13317 :
13318 :
13319 : /*
13320 : Sphere Node deletion
13321 : */
13322 :
13323 : static void Sphere_Del(GF_Node *node)
13324 : {
13325 396 : M_Sphere *p = (M_Sphere *) node;
13326 198 : gf_node_free((GF_Node *) p);
13327 198 : }
13328 :
13329 : static const u16 Sphere_Def2All[] = { 0};
13330 :
13331 : static u32 Sphere_get_field_count(GF_Node *node, u8 IndexMode)
13332 : {
13333 352 : switch(IndexMode) {
13334 : case GF_SG_FIELD_CODING_IN:
13335 0 : return 0;
13336 : case GF_SG_FIELD_CODING_DEF:
13337 99 : return 1;
13338 : case GF_SG_FIELD_CODING_OUT:
13339 0 : return 0;
13340 : case GF_SG_FIELD_CODING_DYN:
13341 0 : return 0;
13342 : default:
13343 77 : return 1;
13344 : }
13345 176 : }
13346 :
13347 : static GF_Err Sphere_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
13348 : {
13349 144 : switch(IndexMode) {
13350 : case GF_SG_FIELD_CODING_DEF:
13351 72 : *allField = Sphere_Def2All[inField];
13352 72 : return GF_OK;
13353 : default:
13354 0 : return GF_BAD_PARAM;
13355 : }
13356 72 : }
13357 : static GF_Err Sphere_get_field(GF_Node *node, GF_FieldInfo *info)
13358 : {
13359 700 : switch (info->fieldIndex) {
13360 : case 0:
13361 350 : info->name = "radius";
13362 350 : info->eventType = GF_SG_EVENT_FIELD;
13363 350 : info->fieldType = GF_SG_VRML_SFFLOAT;
13364 350 : info->far_ptr = & ((M_Sphere *) node)->radius;
13365 350 : return GF_OK;
13366 : default:
13367 0 : return GF_BAD_PARAM;
13368 : }
13369 350 : }
13370 :
13371 :
13372 : static s32 Sphere_get_field_index_by_name(char *name)
13373 : {
13374 126 : if (!strcmp("radius", name)) return 0;
13375 0 : return -1;
13376 42 : }
13377 : static Bool Sphere_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
13378 : {
13379 0 : switch (FieldIndex) {
13380 : case 0:
13381 0 : *AType = 0;
13382 0 : *QType = 11;
13383 0 : *b_min = FLT2FIX(0);
13384 0 : *b_max = FIX_MAX;
13385 0 : return 1;
13386 : default:
13387 0 : return 0;
13388 : }
13389 0 : }
13390 :
13391 :
13392 :
13393 : GF_Node *Sphere_Create()
13394 : {
13395 : M_Sphere *p;
13396 594 : GF_SAFEALLOC(p, M_Sphere);
13397 198 : if(!p) return NULL;
13398 198 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Sphere);
13399 :
13400 : /*default field values*/
13401 198 : p->radius = FLT2FIX(1);
13402 198 : return (GF_Node *)p;
13403 198 : }
13404 :
13405 :
13406 : /*
13407 : SphereSensor Node deletion
13408 : */
13409 :
13410 : static void SphereSensor_Del(GF_Node *node)
13411 : {
13412 36 : M_SphereSensor *p = (M_SphereSensor *) node;
13413 18 : gf_node_free((GF_Node *) p);
13414 18 : }
13415 :
13416 : static const u16 SphereSensor_Def2All[] = { 0, 1, 2};
13417 : static const u16 SphereSensor_In2All[] = { 0, 1, 2};
13418 : static const u16 SphereSensor_Out2All[] = { 0, 1, 2, 3, 4, 5};
13419 :
13420 : static u32 SphereSensor_get_field_count(GF_Node *node, u8 IndexMode)
13421 : {
13422 104 : switch(IndexMode) {
13423 : case GF_SG_FIELD_CODING_IN:
13424 0 : return 3;
13425 : case GF_SG_FIELD_CODING_DEF:
13426 9 : return 3;
13427 : case GF_SG_FIELD_CODING_OUT:
13428 36 : return 6;
13429 : case GF_SG_FIELD_CODING_DYN:
13430 0 : return 0;
13431 : default:
13432 7 : return 6;
13433 : }
13434 52 : }
13435 :
13436 : static GF_Err SphereSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
13437 : {
13438 128 : switch(IndexMode) {
13439 : case GF_SG_FIELD_CODING_IN:
13440 0 : *allField = SphereSensor_In2All[inField];
13441 0 : return GF_OK;
13442 : case GF_SG_FIELD_CODING_DEF:
13443 6 : *allField = SphereSensor_Def2All[inField];
13444 6 : return GF_OK;
13445 : case GF_SG_FIELD_CODING_OUT:
13446 58 : *allField = SphereSensor_Out2All[inField];
13447 58 : return GF_OK;
13448 : default:
13449 0 : return GF_BAD_PARAM;
13450 : }
13451 64 : }
13452 : static GF_Err SphereSensor_get_field(GF_Node *node, GF_FieldInfo *info)
13453 : {
13454 214 : switch (info->fieldIndex) {
13455 : case 0:
13456 18 : info->name = "autoOffset";
13457 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13458 18 : info->fieldType = GF_SG_VRML_SFBOOL;
13459 18 : info->far_ptr = & ((M_SphereSensor *) node)->autoOffset;
13460 18 : return GF_OK;
13461 : case 1:
13462 18 : info->name = "enabled";
13463 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13464 18 : info->fieldType = GF_SG_VRML_SFBOOL;
13465 18 : info->far_ptr = & ((M_SphereSensor *) node)->enabled;
13466 18 : return GF_OK;
13467 : case 2:
13468 18 : info->name = "offset";
13469 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13470 18 : info->fieldType = GF_SG_VRML_SFROTATION;
13471 18 : info->far_ptr = & ((M_SphereSensor *) node)->offset;
13472 18 : return GF_OK;
13473 : case 3:
13474 23 : info->name = "isActive";
13475 23 : info->eventType = GF_SG_EVENT_OUT;
13476 23 : info->fieldType = GF_SG_VRML_SFBOOL;
13477 23 : info->far_ptr = & ((M_SphereSensor *) node)->isActive;
13478 23 : return GF_OK;
13479 : case 4:
13480 15 : info->name = "rotation_changed";
13481 15 : info->eventType = GF_SG_EVENT_OUT;
13482 15 : info->fieldType = GF_SG_VRML_SFROTATION;
13483 15 : info->far_ptr = & ((M_SphereSensor *) node)->rotation_changed;
13484 15 : return GF_OK;
13485 : case 5:
13486 15 : info->name = "trackPoint_changed";
13487 15 : info->eventType = GF_SG_EVENT_OUT;
13488 15 : info->fieldType = GF_SG_VRML_SFVEC3F;
13489 15 : info->far_ptr = & ((M_SphereSensor *) node)->trackPoint_changed;
13490 15 : return GF_OK;
13491 : default:
13492 0 : return GF_BAD_PARAM;
13493 : }
13494 107 : }
13495 :
13496 :
13497 : static s32 SphereSensor_get_field_index_by_name(char *name)
13498 : {
13499 32 : if (!strcmp("autoOffset", name)) return 0;
13500 16 : if (!strcmp("enabled", name)) return 1;
13501 16 : if (!strcmp("offset", name)) return 2;
13502 24 : if (!strcmp("isActive", name)) return 3;
13503 12 : if (!strcmp("rotation_changed", name)) return 4;
13504 8 : if (!strcmp("trackPoint_changed", name)) return 5;
13505 0 : return -1;
13506 16 : }
13507 : static Bool SphereSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
13508 : {
13509 0 : switch (FieldIndex) {
13510 : case 2:
13511 0 : *AType = 0;
13512 0 : *QType = 10;
13513 0 : *b_min = FIX_MIN;
13514 0 : *b_max = FIX_MAX;
13515 0 : return 1;
13516 : default:
13517 0 : return 0;
13518 : }
13519 0 : }
13520 :
13521 :
13522 :
13523 : GF_Node *SphereSensor_Create()
13524 : {
13525 : M_SphereSensor *p;
13526 54 : GF_SAFEALLOC(p, M_SphereSensor);
13527 18 : if(!p) return NULL;
13528 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SphereSensor);
13529 :
13530 : /*default field values*/
13531 18 : p->autoOffset = 1;
13532 18 : p->enabled = 1;
13533 18 : p->offset.x = FLT2FIX(0);
13534 18 : p->offset.y = FLT2FIX(1);
13535 18 : p->offset.z = FLT2FIX(0);
13536 18 : p->offset.q = FLT2FIX(0);
13537 18 : return (GF_Node *)p;
13538 18 : }
13539 :
13540 :
13541 : /*
13542 : SpotLight Node deletion
13543 : */
13544 :
13545 : static void SpotLight_Del(GF_Node *node)
13546 : {
13547 36 : M_SpotLight *p = (M_SpotLight *) node;
13548 18 : gf_node_free((GF_Node *) p);
13549 18 : }
13550 :
13551 : static const u16 SpotLight_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
13552 : static const u16 SpotLight_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
13553 : static const u16 SpotLight_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
13554 : static const u16 SpotLight_Dyn2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 9};
13555 :
13556 : static u32 SpotLight_get_field_count(GF_Node *node, u8 IndexMode)
13557 : {
13558 50 : switch(IndexMode) {
13559 : case GF_SG_FIELD_CODING_IN:
13560 9 : return 10;
13561 : case GF_SG_FIELD_CODING_DEF:
13562 9 : return 10;
13563 : case GF_SG_FIELD_CODING_OUT:
13564 0 : return 10;
13565 : case GF_SG_FIELD_CODING_DYN:
13566 0 : return 9;
13567 : default:
13568 7 : return 10;
13569 : }
13570 25 : }
13571 :
13572 : static GF_Err SpotLight_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
13573 : {
13574 94 : switch(IndexMode) {
13575 : case GF_SG_FIELD_CODING_IN:
13576 17 : *allField = SpotLight_In2All[inField];
13577 17 : return GF_OK;
13578 : case GF_SG_FIELD_CODING_DEF:
13579 30 : *allField = SpotLight_Def2All[inField];
13580 30 : return GF_OK;
13581 : case GF_SG_FIELD_CODING_OUT:
13582 0 : *allField = SpotLight_Out2All[inField];
13583 0 : return GF_OK;
13584 : case GF_SG_FIELD_CODING_DYN:
13585 0 : *allField = SpotLight_Dyn2All[inField];
13586 0 : return GF_OK;
13587 : default:
13588 0 : return GF_BAD_PARAM;
13589 : }
13590 47 : }
13591 : static GF_Err SpotLight_get_field(GF_Node *node, GF_FieldInfo *info)
13592 : {
13593 440 : switch (info->fieldIndex) {
13594 : case 0:
13595 18 : info->name = "ambientIntensity";
13596 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13597 18 : info->fieldType = GF_SG_VRML_SFFLOAT;
13598 18 : info->far_ptr = & ((M_SpotLight *) node)->ambientIntensity;
13599 18 : return GF_OK;
13600 : case 1:
13601 18 : info->name = "attenuation";
13602 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13603 18 : info->fieldType = GF_SG_VRML_SFVEC3F;
13604 18 : info->far_ptr = & ((M_SpotLight *) node)->attenuation;
13605 18 : return GF_OK;
13606 : case 2:
13607 18 : info->name = "beamWidth";
13608 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13609 18 : info->fieldType = GF_SG_VRML_SFFLOAT;
13610 18 : info->far_ptr = & ((M_SpotLight *) node)->beamWidth;
13611 18 : return GF_OK;
13612 : case 3:
13613 33 : info->name = "color";
13614 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13615 33 : info->fieldType = GF_SG_VRML_SFCOLOR;
13616 33 : info->far_ptr = & ((M_SpotLight *) node)->color;
13617 33 : return GF_OK;
13618 : case 4:
13619 18 : info->name = "cutOffAngle";
13620 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13621 18 : info->fieldType = GF_SG_VRML_SFFLOAT;
13622 18 : info->far_ptr = & ((M_SpotLight *) node)->cutOffAngle;
13623 18 : return GF_OK;
13624 : case 5:
13625 28 : info->name = "direction";
13626 28 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13627 28 : info->fieldType = GF_SG_VRML_SFVEC3F;
13628 28 : info->far_ptr = & ((M_SpotLight *) node)->direction;
13629 28 : return GF_OK;
13630 : case 6:
13631 18 : info->name = "intensity";
13632 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13633 18 : info->fieldType = GF_SG_VRML_SFFLOAT;
13634 18 : info->far_ptr = & ((M_SpotLight *) node)->intensity;
13635 18 : return GF_OK;
13636 : case 7:
13637 33 : info->name = "location";
13638 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13639 33 : info->fieldType = GF_SG_VRML_SFVEC3F;
13640 33 : info->far_ptr = & ((M_SpotLight *) node)->location;
13641 33 : return GF_OK;
13642 : case 8:
13643 18 : info->name = "on";
13644 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13645 18 : info->fieldType = GF_SG_VRML_SFBOOL;
13646 18 : info->far_ptr = & ((M_SpotLight *) node)->on;
13647 18 : return GF_OK;
13648 : case 9:
13649 18 : info->name = "radius";
13650 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13651 18 : info->fieldType = GF_SG_VRML_SFFLOAT;
13652 18 : info->far_ptr = & ((M_SpotLight *) node)->radius;
13653 18 : return GF_OK;
13654 : default:
13655 0 : return GF_BAD_PARAM;
13656 : }
13657 220 : }
13658 :
13659 :
13660 : static s32 SpotLight_get_field_index_by_name(char *name)
13661 : {
13662 28 : if (!strcmp("ambientIntensity", name)) return 0;
13663 14 : if (!strcmp("attenuation", name)) return 1;
13664 14 : if (!strcmp("beamWidth", name)) return 2;
13665 18 : if (!strcmp("color", name)) return 3;
13666 10 : if (!strcmp("cutOffAngle", name)) return 4;
13667 16 : if (!strcmp("direction", name)) return 5;
13668 4 : if (!strcmp("intensity", name)) return 6;
13669 8 : if (!strcmp("location", name)) return 7;
13670 0 : if (!strcmp("on", name)) return 8;
13671 0 : if (!strcmp("radius", name)) return 9;
13672 0 : return -1;
13673 14 : }
13674 : static Bool SpotLight_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
13675 : {
13676 0 : switch (FieldIndex) {
13677 : case 0:
13678 0 : *AType = 8;
13679 0 : *QType = 4;
13680 0 : *b_min = FLT2FIX(0);
13681 0 : *b_max = FLT2FIX(1);
13682 0 : return 1;
13683 : case 1:
13684 0 : *AType = 1;
13685 0 : *QType = 11;
13686 0 : *b_min = FLT2FIX(0);
13687 0 : *b_max = FIX_MAX;
13688 0 : return 1;
13689 : case 2:
13690 0 : *AType = 8;
13691 0 : *QType = 6;
13692 0 : *b_min = FLT2FIX(0);
13693 0 : *b_max = FLT2FIX(1.5707963);
13694 0 : return 1;
13695 : case 3:
13696 0 : *AType = 4;
13697 0 : *QType = 4;
13698 0 : *b_min = FLT2FIX(0);
13699 0 : *b_max = FLT2FIX(1);
13700 0 : return 1;
13701 : case 4:
13702 0 : *AType = 8;
13703 0 : *QType = 6;
13704 0 : *b_min = FLT2FIX(0);
13705 0 : *b_max = FLT2FIX(1.5707963);
13706 0 : return 1;
13707 : case 5:
13708 0 : *AType = 9;
13709 0 : *QType = 9;
13710 0 : *b_min = FIX_MIN;
13711 0 : *b_max = FIX_MAX;
13712 0 : return 1;
13713 : case 6:
13714 0 : *AType = 8;
13715 0 : *QType = 4;
13716 0 : *b_min = FLT2FIX(0);
13717 0 : *b_max = FLT2FIX(1);
13718 0 : return 1;
13719 : case 7:
13720 0 : *AType = 1;
13721 0 : *QType = 1;
13722 0 : *b_min = FIX_MIN;
13723 0 : *b_max = FIX_MAX;
13724 0 : return 1;
13725 : case 9:
13726 0 : *AType = 7;
13727 0 : *QType = 11;
13728 0 : *b_min = FLT2FIX(0);
13729 0 : *b_max = FIX_MAX;
13730 0 : return 1;
13731 : default:
13732 0 : return 0;
13733 : }
13734 0 : }
13735 :
13736 :
13737 :
13738 : GF_Node *SpotLight_Create()
13739 : {
13740 : M_SpotLight *p;
13741 54 : GF_SAFEALLOC(p, M_SpotLight);
13742 18 : if(!p) return NULL;
13743 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SpotLight);
13744 :
13745 : /*default field values*/
13746 18 : p->ambientIntensity = FLT2FIX(0);
13747 18 : p->attenuation.x = FLT2FIX(1);
13748 18 : p->attenuation.y = FLT2FIX(0);
13749 18 : p->attenuation.z = FLT2FIX(0);
13750 18 : p->beamWidth = FLT2FIX(1.570796);
13751 18 : p->color.red = FLT2FIX(1);
13752 18 : p->color.green = FLT2FIX(1);
13753 18 : p->color.blue = FLT2FIX(1);
13754 18 : p->cutOffAngle = FLT2FIX(0.785398);
13755 18 : p->direction.x = FLT2FIX(0);
13756 18 : p->direction.y = FLT2FIX(0);
13757 18 : p->direction.z = FLT2FIX(-1);
13758 18 : p->intensity = FLT2FIX(1);
13759 18 : p->location.x = FLT2FIX(0);
13760 18 : p->location.y = FLT2FIX(0);
13761 18 : p->location.z = FLT2FIX(0);
13762 18 : p->on = 1;
13763 18 : p->radius = FLT2FIX(100);
13764 18 : return (GF_Node *)p;
13765 18 : }
13766 :
13767 :
13768 : /*
13769 : Switch Node deletion
13770 : */
13771 :
13772 : static void Switch_Del(GF_Node *node)
13773 : {
13774 1088 : M_Switch *p = (M_Switch *) node;
13775 544 : gf_node_unregister_children((GF_Node *) p, p->choice);
13776 544 : gf_node_free((GF_Node *) p);
13777 544 : }
13778 :
13779 : static const u16 Switch_Def2All[] = { 0, 1};
13780 : static const u16 Switch_In2All[] = { 0, 1};
13781 : static const u16 Switch_Out2All[] = { 0, 1};
13782 :
13783 : static u32 Switch_get_field_count(GF_Node *node, u8 IndexMode)
13784 : {
13785 2290 : switch(IndexMode) {
13786 : case GF_SG_FIELD_CODING_IN:
13787 660 : return 2;
13788 : case GF_SG_FIELD_CODING_DEF:
13789 223 : return 2;
13790 : case GF_SG_FIELD_CODING_OUT:
13791 0 : return 2;
13792 : case GF_SG_FIELD_CODING_DYN:
13793 0 : return 0;
13794 : default:
13795 262 : return 2;
13796 : }
13797 1145 : }
13798 :
13799 : static GF_Err Switch_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
13800 : {
13801 1432 : switch(IndexMode) {
13802 : case GF_SG_FIELD_CODING_IN:
13803 403 : *allField = Switch_In2All[inField];
13804 403 : return GF_OK;
13805 : case GF_SG_FIELD_CODING_DEF:
13806 313 : *allField = Switch_Def2All[inField];
13807 313 : return GF_OK;
13808 : case GF_SG_FIELD_CODING_OUT:
13809 0 : *allField = Switch_Out2All[inField];
13810 0 : return GF_OK;
13811 : default:
13812 0 : return GF_BAD_PARAM;
13813 : }
13814 716 : }
13815 : static GF_Err Switch_get_field(GF_Node *node, GF_FieldInfo *info)
13816 : {
13817 4166 : switch (info->fieldIndex) {
13818 : case 0:
13819 946 : info->name = "choice";
13820 946 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13821 946 : info->fieldType = GF_SG_VRML_MFNODE;
13822 946 : info->NDTtype = NDT_SF3DNode;
13823 946 : info->far_ptr = & ((M_Switch *)node)->choice;
13824 946 : return GF_OK;
13825 : case 1:
13826 1137 : info->name = "whichChoice";
13827 1137 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13828 1137 : info->fieldType = GF_SG_VRML_SFINT32;
13829 1137 : info->far_ptr = & ((M_Switch *) node)->whichChoice;
13830 1137 : return GF_OK;
13831 : default:
13832 0 : return GF_BAD_PARAM;
13833 : }
13834 2083 : }
13835 :
13836 :
13837 : static s32 Switch_get_field_index_by_name(char *name)
13838 : {
13839 619 : if (!strcmp("choice", name)) return 0;
13840 304 : if (!strcmp("whichChoice", name)) return 1;
13841 0 : return -1;
13842 257 : }
13843 : static Bool Switch_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
13844 : {
13845 0 : switch (FieldIndex) {
13846 : case 1:
13847 0 : *AType = 0;
13848 0 : *QType = 13;
13849 0 : *QT13_bits = 10;
13850 0 : *b_min = FLT2FIX(-1);
13851 0 : *b_max = FLT2FIX( 1022);
13852 0 : return 1;
13853 : default:
13854 0 : return 0;
13855 : }
13856 0 : }
13857 :
13858 :
13859 :
13860 : GF_Node *Switch_Create()
13861 : {
13862 : M_Switch *p;
13863 1632 : GF_SAFEALLOC(p, M_Switch);
13864 544 : if(!p) return NULL;
13865 544 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Switch);
13866 :
13867 : /*default field values*/
13868 544 : p->whichChoice = -1;
13869 544 : return (GF_Node *)p;
13870 544 : }
13871 :
13872 :
13873 : /*
13874 : TermCap Node deletion
13875 : */
13876 :
13877 : static void TermCap_Del(GF_Node *node)
13878 : {
13879 0 : M_TermCap *p = (M_TermCap *) node;
13880 0 : gf_node_free((GF_Node *) p);
13881 0 : }
13882 :
13883 : static const u16 TermCap_Def2All[] = { 1};
13884 : static const u16 TermCap_In2All[] = { 0, 1};
13885 : static const u16 TermCap_Out2All[] = { 1, 2};
13886 :
13887 : static u32 TermCap_get_field_count(GF_Node *node, u8 IndexMode)
13888 : {
13889 0 : switch(IndexMode) {
13890 : case GF_SG_FIELD_CODING_IN:
13891 0 : return 2;
13892 : case GF_SG_FIELD_CODING_DEF:
13893 0 : return 1;
13894 : case GF_SG_FIELD_CODING_OUT:
13895 0 : return 2;
13896 : case GF_SG_FIELD_CODING_DYN:
13897 0 : return 0;
13898 : default:
13899 0 : return 3;
13900 : }
13901 0 : }
13902 :
13903 : static GF_Err TermCap_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
13904 : {
13905 0 : switch(IndexMode) {
13906 : case GF_SG_FIELD_CODING_IN:
13907 0 : *allField = TermCap_In2All[inField];
13908 0 : return GF_OK;
13909 : case GF_SG_FIELD_CODING_DEF:
13910 0 : *allField = TermCap_Def2All[inField];
13911 0 : return GF_OK;
13912 : case GF_SG_FIELD_CODING_OUT:
13913 0 : *allField = TermCap_Out2All[inField];
13914 0 : return GF_OK;
13915 : default:
13916 0 : return GF_BAD_PARAM;
13917 : }
13918 0 : }
13919 : static GF_Err TermCap_get_field(GF_Node *node, GF_FieldInfo *info)
13920 : {
13921 0 : switch (info->fieldIndex) {
13922 : case 0:
13923 0 : info->name = "evaluate";
13924 0 : info->eventType = GF_SG_EVENT_IN;
13925 0 : info->on_event_in = ((M_TermCap *)node)->on_evaluate;
13926 0 : info->fieldType = GF_SG_VRML_SFTIME;
13927 0 : info->far_ptr = & ((M_TermCap *) node)->evaluate;
13928 0 : return GF_OK;
13929 : case 1:
13930 0 : info->name = "capability";
13931 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13932 0 : info->fieldType = GF_SG_VRML_SFINT32;
13933 0 : info->far_ptr = & ((M_TermCap *) node)->capability;
13934 0 : return GF_OK;
13935 : case 2:
13936 0 : info->name = "value";
13937 0 : info->eventType = GF_SG_EVENT_OUT;
13938 0 : info->fieldType = GF_SG_VRML_SFINT32;
13939 0 : info->far_ptr = & ((M_TermCap *) node)->value;
13940 0 : return GF_OK;
13941 : default:
13942 0 : return GF_BAD_PARAM;
13943 : }
13944 0 : }
13945 :
13946 :
13947 : static s32 TermCap_get_field_index_by_name(char *name)
13948 : {
13949 0 : if (!strcmp("evaluate", name)) return 0;
13950 0 : if (!strcmp("capability", name)) return 1;
13951 0 : if (!strcmp("value", name)) return 2;
13952 0 : return -1;
13953 0 : }
13954 : static Bool TermCap_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
13955 : {
13956 0 : switch (FieldIndex) {
13957 : case 1:
13958 0 : *AType = 0;
13959 0 : *QType = 13;
13960 0 : *QT13_bits = 7;
13961 0 : *b_min = FLT2FIX(0);
13962 0 : *b_max = FLT2FIX(127);
13963 0 : return 1;
13964 : case 2:
13965 0 : *AType = 0;
13966 0 : *QType = 13;
13967 0 : *QT13_bits = 3;
13968 0 : *b_min = FLT2FIX(0);
13969 0 : *b_max = FLT2FIX(7);
13970 0 : return 1;
13971 : default:
13972 0 : return 0;
13973 : }
13974 0 : }
13975 :
13976 :
13977 :
13978 : GF_Node *TermCap_Create()
13979 : {
13980 : M_TermCap *p;
13981 0 : GF_SAFEALLOC(p, M_TermCap);
13982 0 : if(!p) return NULL;
13983 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TermCap);
13984 :
13985 : /*default field values*/
13986 0 : p->capability = 0;
13987 0 : return (GF_Node *)p;
13988 0 : }
13989 :
13990 :
13991 : /*
13992 : Text Node deletion
13993 : */
13994 :
13995 : static void Text_Del(GF_Node *node)
13996 : {
13997 25784 : M_Text *p = (M_Text *) node;
13998 12892 : gf_sg_mfstring_del(p->string);
13999 12892 : gf_sg_mffloat_del(p->length);
14000 12892 : gf_node_unregister((GF_Node *) p->fontStyle, (GF_Node *) p);
14001 12892 : gf_node_free((GF_Node *) p);
14002 12892 : }
14003 :
14004 : static const u16 Text_Def2All[] = { 0, 1, 2, 3};
14005 : static const u16 Text_In2All[] = { 0, 1, 2, 3};
14006 : static const u16 Text_Out2All[] = { 0, 1, 2, 3};
14007 : static const u16 Text_Dyn2All[] = { 1, 3};
14008 :
14009 : static u32 Text_get_field_count(GF_Node *node, u8 IndexMode)
14010 : {
14011 24766 : switch(IndexMode) {
14012 : case GF_SG_FIELD_CODING_IN:
14013 876 : return 4;
14014 : case GF_SG_FIELD_CODING_DEF:
14015 5988 : return 4;
14016 : case GF_SG_FIELD_CODING_OUT:
14017 0 : return 4;
14018 : case GF_SG_FIELD_CODING_DYN:
14019 0 : return 2;
14020 : default:
14021 5519 : return 4;
14022 : }
14023 12383 : }
14024 :
14025 : static GF_Err Text_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
14026 : {
14027 25278 : switch(IndexMode) {
14028 : case GF_SG_FIELD_CODING_IN:
14029 676 : *allField = Text_In2All[inField];
14030 676 : return GF_OK;
14031 : case GF_SG_FIELD_CODING_DEF:
14032 11963 : *allField = Text_Def2All[inField];
14033 11963 : return GF_OK;
14034 : case GF_SG_FIELD_CODING_OUT:
14035 0 : *allField = Text_Out2All[inField];
14036 0 : return GF_OK;
14037 : case GF_SG_FIELD_CODING_DYN:
14038 0 : *allField = Text_Dyn2All[inField];
14039 0 : return GF_OK;
14040 : default:
14041 0 : return GF_BAD_PARAM;
14042 : }
14043 12639 : }
14044 : static GF_Err Text_get_field(GF_Node *node, GF_FieldInfo *info)
14045 : {
14046 138404 : switch (info->fieldIndex) {
14047 : case 0:
14048 24781 : info->name = "string";
14049 24781 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14050 24781 : info->fieldType = GF_SG_VRML_MFSTRING;
14051 24781 : info->far_ptr = & ((M_Text *) node)->string;
14052 24781 : return GF_OK;
14053 : case 1:
14054 13752 : info->name = "length";
14055 13752 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14056 13752 : info->fieldType = GF_SG_VRML_MFFLOAT;
14057 13752 : info->far_ptr = & ((M_Text *) node)->length;
14058 13752 : return GF_OK;
14059 : case 2:
14060 16907 : info->name = "fontStyle";
14061 16907 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14062 16907 : info->fieldType = GF_SG_VRML_SFNODE;
14063 16907 : info->NDTtype = NDT_SFFontStyleNode;
14064 16907 : info->far_ptr = & ((M_Text *)node)->fontStyle;
14065 16907 : return GF_OK;
14066 : case 3:
14067 13762 : info->name = "maxExtent";
14068 13762 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14069 13762 : info->fieldType = GF_SG_VRML_SFFLOAT;
14070 13762 : info->far_ptr = & ((M_Text *) node)->maxExtent;
14071 13762 : return GF_OK;
14072 : default:
14073 0 : return GF_BAD_PARAM;
14074 : }
14075 69202 : }
14076 :
14077 :
14078 : static s32 Text_get_field_index_by_name(char *name)
14079 : {
14080 14687 : if (!strcmp("string", name)) return 0;
14081 2828 : if (!strcmp("length", name)) return 1;
14082 5544 : if (!strcmp("fontStyle", name)) return 2;
14083 96 : if (!strcmp("maxExtent", name)) return 3;
14084 0 : return -1;
14085 5833 : }
14086 : static Bool Text_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
14087 : {
14088 0 : switch (FieldIndex) {
14089 : case 1:
14090 0 : *AType = 7;
14091 0 : *QType = 11;
14092 0 : *b_min = FLT2FIX(0);
14093 0 : *b_max = FIX_MAX;
14094 0 : return 1;
14095 : case 3:
14096 0 : *AType = 7;
14097 0 : *QType = 11;
14098 0 : *b_min = FLT2FIX(0);
14099 0 : *b_max = FIX_MAX;
14100 0 : return 1;
14101 : default:
14102 0 : return 0;
14103 : }
14104 0 : }
14105 :
14106 :
14107 :
14108 : GF_Node *Text_Create()
14109 : {
14110 : M_Text *p;
14111 38676 : GF_SAFEALLOC(p, M_Text);
14112 12892 : if(!p) return NULL;
14113 12892 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Text);
14114 :
14115 : /*default field values*/
14116 12892 : p->maxExtent = FLT2FIX(0.0);
14117 12892 : return (GF_Node *)p;
14118 12892 : }
14119 :
14120 :
14121 : /*
14122 : TextureCoordinate Node deletion
14123 : */
14124 :
14125 : static void TextureCoordinate_Del(GF_Node *node)
14126 : {
14127 0 : M_TextureCoordinate *p = (M_TextureCoordinate *) node;
14128 0 : gf_sg_mfvec2f_del(p->point);
14129 0 : gf_node_free((GF_Node *) p);
14130 0 : }
14131 :
14132 : static const u16 TextureCoordinate_Def2All[] = { 0};
14133 : static const u16 TextureCoordinate_In2All[] = { 0};
14134 : static const u16 TextureCoordinate_Out2All[] = { 0};
14135 : static const u16 TextureCoordinate_Dyn2All[] = { 0};
14136 :
14137 : static u32 TextureCoordinate_get_field_count(GF_Node *node, u8 IndexMode)
14138 : {
14139 0 : switch(IndexMode) {
14140 : case GF_SG_FIELD_CODING_IN:
14141 0 : return 1;
14142 : case GF_SG_FIELD_CODING_DEF:
14143 0 : return 1;
14144 : case GF_SG_FIELD_CODING_OUT:
14145 0 : return 1;
14146 : case GF_SG_FIELD_CODING_DYN:
14147 0 : return 1;
14148 : default:
14149 0 : return 1;
14150 : }
14151 0 : }
14152 :
14153 : static GF_Err TextureCoordinate_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
14154 : {
14155 0 : switch(IndexMode) {
14156 : case GF_SG_FIELD_CODING_IN:
14157 0 : *allField = TextureCoordinate_In2All[inField];
14158 0 : return GF_OK;
14159 : case GF_SG_FIELD_CODING_DEF:
14160 0 : *allField = TextureCoordinate_Def2All[inField];
14161 0 : return GF_OK;
14162 : case GF_SG_FIELD_CODING_OUT:
14163 0 : *allField = TextureCoordinate_Out2All[inField];
14164 0 : return GF_OK;
14165 : case GF_SG_FIELD_CODING_DYN:
14166 0 : *allField = TextureCoordinate_Dyn2All[inField];
14167 0 : return GF_OK;
14168 : default:
14169 0 : return GF_BAD_PARAM;
14170 : }
14171 0 : }
14172 : static GF_Err TextureCoordinate_get_field(GF_Node *node, GF_FieldInfo *info)
14173 : {
14174 0 : switch (info->fieldIndex) {
14175 : case 0:
14176 0 : info->name = "point";
14177 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14178 0 : info->fieldType = GF_SG_VRML_MFVEC2F;
14179 0 : info->far_ptr = & ((M_TextureCoordinate *) node)->point;
14180 0 : return GF_OK;
14181 : default:
14182 0 : return GF_BAD_PARAM;
14183 : }
14184 0 : }
14185 :
14186 :
14187 : static s32 TextureCoordinate_get_field_index_by_name(char *name)
14188 : {
14189 0 : if (!strcmp("point", name)) return 0;
14190 0 : return -1;
14191 0 : }
14192 : static Bool TextureCoordinate_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
14193 : {
14194 0 : switch (FieldIndex) {
14195 : case 0:
14196 0 : *AType = 2;
14197 0 : *QType = 5;
14198 0 : *b_min = FIX_MIN;
14199 0 : *b_max = FIX_MAX;
14200 0 : return 1;
14201 : default:
14202 0 : return 0;
14203 : }
14204 0 : }
14205 :
14206 :
14207 :
14208 : GF_Node *TextureCoordinate_Create()
14209 : {
14210 : M_TextureCoordinate *p;
14211 0 : GF_SAFEALLOC(p, M_TextureCoordinate);
14212 0 : if(!p) return NULL;
14213 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TextureCoordinate);
14214 :
14215 : /*default field values*/
14216 0 : return (GF_Node *)p;
14217 0 : }
14218 :
14219 :
14220 : /*
14221 : TextureTransform Node deletion
14222 : */
14223 :
14224 : static void TextureTransform_Del(GF_Node *node)
14225 : {
14226 468 : M_TextureTransform *p = (M_TextureTransform *) node;
14227 234 : gf_node_free((GF_Node *) p);
14228 234 : }
14229 :
14230 : static const u16 TextureTransform_Def2All[] = { 0, 1, 2, 3};
14231 : static const u16 TextureTransform_In2All[] = { 0, 1, 2, 3};
14232 : static const u16 TextureTransform_Out2All[] = { 0, 1, 2, 3};
14233 : static const u16 TextureTransform_Dyn2All[] = { 0, 1, 2, 3};
14234 :
14235 : static u32 TextureTransform_get_field_count(GF_Node *node, u8 IndexMode)
14236 : {
14237 524 : switch(IndexMode) {
14238 : case GF_SG_FIELD_CODING_IN:
14239 54 : return 4;
14240 : case GF_SG_FIELD_CODING_DEF:
14241 117 : return 4;
14242 : case GF_SG_FIELD_CODING_OUT:
14243 0 : return 4;
14244 : case GF_SG_FIELD_CODING_DYN:
14245 0 : return 4;
14246 : default:
14247 91 : return 4;
14248 : }
14249 262 : }
14250 :
14251 : static GF_Err TextureTransform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
14252 : {
14253 468 : switch(IndexMode) {
14254 : case GF_SG_FIELD_CODING_IN:
14255 60 : *allField = TextureTransform_In2All[inField];
14256 60 : return GF_OK;
14257 : case GF_SG_FIELD_CODING_DEF:
14258 174 : *allField = TextureTransform_Def2All[inField];
14259 174 : return GF_OK;
14260 : case GF_SG_FIELD_CODING_OUT:
14261 0 : *allField = TextureTransform_Out2All[inField];
14262 0 : return GF_OK;
14263 : case GF_SG_FIELD_CODING_DYN:
14264 0 : *allField = TextureTransform_Dyn2All[inField];
14265 0 : return GF_OK;
14266 : default:
14267 0 : return GF_BAD_PARAM;
14268 : }
14269 234 : }
14270 : static GF_Err TextureTransform_get_field(GF_Node *node, GF_FieldInfo *info)
14271 : {
14272 2388 : switch (info->fieldIndex) {
14273 : case 0:
14274 287 : info->name = "center";
14275 287 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14276 287 : info->fieldType = GF_SG_VRML_SFVEC2F;
14277 287 : info->far_ptr = & ((M_TextureTransform *) node)->center;
14278 287 : return GF_OK;
14279 : case 1:
14280 310 : info->name = "rotation";
14281 310 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14282 310 : info->fieldType = GF_SG_VRML_SFFLOAT;
14283 310 : info->far_ptr = & ((M_TextureTransform *) node)->rotation;
14284 310 : return GF_OK;
14285 : case 2:
14286 325 : info->name = "scale";
14287 325 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14288 325 : info->fieldType = GF_SG_VRML_SFVEC2F;
14289 325 : info->far_ptr = & ((M_TextureTransform *) node)->scale;
14290 325 : return GF_OK;
14291 : case 3:
14292 272 : info->name = "translation";
14293 272 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14294 272 : info->fieldType = GF_SG_VRML_SFVEC2F;
14295 272 : info->far_ptr = & ((M_TextureTransform *) node)->translation;
14296 272 : return GF_OK;
14297 : default:
14298 0 : return GF_BAD_PARAM;
14299 : }
14300 1194 : }
14301 :
14302 :
14303 : static s32 TextureTransform_get_field_index_by_name(char *name)
14304 : {
14305 176 : if (!strcmp("center", name)) return 0;
14306 88 : if (!strcmp("rotation", name)) return 1;
14307 68 : if (!strcmp("scale", name)) return 2;
14308 24 : if (!strcmp("translation", name)) return 3;
14309 0 : return -1;
14310 80 : }
14311 : static Bool TextureTransform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
14312 : {
14313 0 : switch (FieldIndex) {
14314 : case 0:
14315 0 : *AType = 2;
14316 0 : *QType = 2;
14317 0 : *b_min = FIX_MIN;
14318 0 : *b_max = FIX_MAX;
14319 0 : return 1;
14320 : case 1:
14321 0 : *AType = 6;
14322 0 : *QType = 6;
14323 0 : *b_min = FLT2FIX(0);
14324 0 : *b_max = FLT2FIX(6.2831853);
14325 0 : return 1;
14326 : case 2:
14327 0 : *AType = 12;
14328 0 : *QType = 7;
14329 0 : *b_min = FIX_MIN;
14330 0 : *b_max = FIX_MAX;
14331 0 : return 1;
14332 : case 3:
14333 0 : *AType = 2;
14334 0 : *QType = 2;
14335 0 : *b_min = FIX_MIN;
14336 0 : *b_max = FIX_MAX;
14337 0 : return 1;
14338 : default:
14339 0 : return 0;
14340 : }
14341 0 : }
14342 :
14343 :
14344 :
14345 : GF_Node *TextureTransform_Create()
14346 : {
14347 : M_TextureTransform *p;
14348 702 : GF_SAFEALLOC(p, M_TextureTransform);
14349 234 : if(!p) return NULL;
14350 234 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TextureTransform);
14351 :
14352 : /*default field values*/
14353 234 : p->center.x = FLT2FIX(0);
14354 234 : p->center.y = FLT2FIX(0);
14355 234 : p->rotation = FLT2FIX(0);
14356 234 : p->scale.x = FLT2FIX(1);
14357 234 : p->scale.y = FLT2FIX(1);
14358 234 : p->translation.x = FLT2FIX(0);
14359 234 : p->translation.y = FLT2FIX(0);
14360 234 : return (GF_Node *)p;
14361 234 : }
14362 :
14363 :
14364 : /*
14365 : TimeSensor Node deletion
14366 : */
14367 :
14368 : static void TimeSensor_Del(GF_Node *node)
14369 : {
14370 3734 : M_TimeSensor *p = (M_TimeSensor *) node;
14371 1867 : gf_node_free((GF_Node *) p);
14372 1867 : }
14373 :
14374 : static const u16 TimeSensor_Def2All[] = { 0, 1, 2, 3, 4};
14375 : static const u16 TimeSensor_In2All[] = { 0, 1, 2, 3, 4};
14376 : static const u16 TimeSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
14377 :
14378 : static u32 TimeSensor_get_field_count(GF_Node *node, u8 IndexMode)
14379 : {
14380 6296 : switch(IndexMode) {
14381 : case GF_SG_FIELD_CODING_IN:
14382 243 : return 5;
14383 : case GF_SG_FIELD_CODING_DEF:
14384 913 : return 5;
14385 : case GF_SG_FIELD_CODING_OUT:
14386 1226 : return 9;
14387 : case GF_SG_FIELD_CODING_DYN:
14388 0 : return 0;
14389 : default:
14390 766 : return 9;
14391 : }
14392 3148 : }
14393 :
14394 : static GF_Err TimeSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
14395 : {
14396 9726 : switch(IndexMode) {
14397 : case GF_SG_FIELD_CODING_IN:
14398 317 : *allField = TimeSensor_In2All[inField];
14399 317 : return GF_OK;
14400 : case GF_SG_FIELD_CODING_DEF:
14401 1969 : *allField = TimeSensor_Def2All[inField];
14402 1969 : return GF_OK;
14403 : case GF_SG_FIELD_CODING_OUT:
14404 2577 : *allField = TimeSensor_Out2All[inField];
14405 2577 : return GF_OK;
14406 : default:
14407 0 : return GF_BAD_PARAM;
14408 : }
14409 4863 : }
14410 : static GF_Err TimeSensor_get_field(GF_Node *node, GF_FieldInfo *info)
14411 : {
14412 33402 : switch (info->fieldIndex) {
14413 : case 0:
14414 3174 : info->name = "cycleInterval";
14415 3174 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14416 3174 : info->fieldType = GF_SG_VRML_SFTIME;
14417 3174 : info->far_ptr = & ((M_TimeSensor *) node)->cycleInterval;
14418 3174 : return GF_OK;
14419 : case 1:
14420 2124 : info->name = "enabled";
14421 2124 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14422 2124 : info->fieldType = GF_SG_VRML_SFBOOL;
14423 2124 : info->far_ptr = & ((M_TimeSensor *) node)->enabled;
14424 2124 : return GF_OK;
14425 : case 2:
14426 3186 : info->name = "loop";
14427 3186 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14428 3186 : info->fieldType = GF_SG_VRML_SFBOOL;
14429 3186 : info->far_ptr = & ((M_TimeSensor *) node)->loop;
14430 3186 : return GF_OK;
14431 : case 3:
14432 2232 : info->name = "startTime";
14433 2232 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14434 2232 : info->fieldType = GF_SG_VRML_SFTIME;
14435 2232 : info->far_ptr = & ((M_TimeSensor *) node)->startTime;
14436 2232 : return GF_OK;
14437 : case 4:
14438 1944 : info->name = "stopTime";
14439 1944 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14440 1944 : info->fieldType = GF_SG_VRML_SFTIME;
14441 1944 : info->far_ptr = & ((M_TimeSensor *) node)->stopTime;
14442 1944 : return GF_OK;
14443 : case 5:
14444 822 : info->name = "cycleTime";
14445 822 : info->eventType = GF_SG_EVENT_OUT;
14446 822 : info->fieldType = GF_SG_VRML_SFTIME;
14447 822 : info->far_ptr = & ((M_TimeSensor *) node)->cycleTime;
14448 822 : return GF_OK;
14449 : case 6:
14450 1707 : info->name = "fraction_changed";
14451 1707 : info->eventType = GF_SG_EVENT_OUT;
14452 1707 : info->fieldType = GF_SG_VRML_SFFLOAT;
14453 1707 : info->far_ptr = & ((M_TimeSensor *) node)->fraction_changed;
14454 1707 : return GF_OK;
14455 : case 7:
14456 774 : info->name = "isActive";
14457 774 : info->eventType = GF_SG_EVENT_OUT;
14458 774 : info->fieldType = GF_SG_VRML_SFBOOL;
14459 774 : info->far_ptr = & ((M_TimeSensor *) node)->isActive;
14460 774 : return GF_OK;
14461 : case 8:
14462 738 : info->name = "time";
14463 738 : info->eventType = GF_SG_EVENT_OUT;
14464 738 : info->fieldType = GF_SG_VRML_SFTIME;
14465 738 : info->far_ptr = & ((M_TimeSensor *) node)->time;
14466 738 : return GF_OK;
14467 : default:
14468 0 : return GF_BAD_PARAM;
14469 : }
14470 16701 : }
14471 :
14472 :
14473 : static s32 TimeSensor_get_field_index_by_name(char *name)
14474 : {
14475 3762 : if (!strcmp("cycleInterval", name)) return 0;
14476 1430 : if (!strcmp("enabled", name)) return 1;
14477 1634 : if (!strcmp("loop", name)) return 2;
14478 1016 : if (!strcmp("startTime", name)) return 3;
14479 828 : if (!strcmp("stopTime", name)) return 4;
14480 810 : if (!strcmp("cycleTime", name)) return 5;
14481 1208 : if (!strcmp("fraction_changed", name)) return 6;
14482 250 : if (!strcmp("isActive", name)) return 7;
14483 210 : if (!strcmp("time", name)) return 8;
14484 202 : return -1;
14485 1704 : }
14486 : static Bool TimeSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
14487 : {
14488 : switch (FieldIndex) {
14489 : default:
14490 0 : return 0;
14491 : }
14492 : }
14493 :
14494 :
14495 :
14496 : GF_Node *TimeSensor_Create()
14497 : {
14498 : M_TimeSensor *p;
14499 5601 : GF_SAFEALLOC(p, M_TimeSensor);
14500 1867 : if(!p) return NULL;
14501 1867 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TimeSensor);
14502 :
14503 : /*default field values*/
14504 1867 : p->cycleInterval = 1;
14505 1867 : p->enabled = 1;
14506 1867 : p->startTime = 0;
14507 1867 : p->stopTime = 0;
14508 1867 : return (GF_Node *)p;
14509 1867 : }
14510 :
14511 :
14512 : /*
14513 : TouchSensor Node deletion
14514 : */
14515 :
14516 : static void TouchSensor_Del(GF_Node *node)
14517 : {
14518 11914 : M_TouchSensor *p = (M_TouchSensor *) node;
14519 5957 : gf_node_free((GF_Node *) p);
14520 5957 : }
14521 :
14522 : static const u16 TouchSensor_Def2All[] = { 0};
14523 : static const u16 TouchSensor_In2All[] = { 0};
14524 : static const u16 TouchSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
14525 :
14526 : static u32 TouchSensor_get_field_count(GF_Node *node, u8 IndexMode)
14527 : {
14528 20136 : switch(IndexMode) {
14529 : case GF_SG_FIELD_CODING_IN:
14530 0 : return 1;
14531 : case GF_SG_FIELD_CODING_DEF:
14532 2703 : return 1;
14533 : case GF_SG_FIELD_CODING_OUT:
14534 4707 : return 7;
14535 : case GF_SG_FIELD_CODING_DYN:
14536 0 : return 0;
14537 : default:
14538 2658 : return 7;
14539 : }
14540 10068 : }
14541 :
14542 : static GF_Err TouchSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
14543 : {
14544 17670 : switch(IndexMode) {
14545 : case GF_SG_FIELD_CODING_IN:
14546 0 : *allField = TouchSensor_In2All[inField];
14547 0 : return GF_OK;
14548 : case GF_SG_FIELD_CODING_DEF:
14549 594 : *allField = TouchSensor_Def2All[inField];
14550 594 : return GF_OK;
14551 : case GF_SG_FIELD_CODING_OUT:
14552 8241 : *allField = TouchSensor_Out2All[inField];
14553 8241 : return GF_OK;
14554 : default:
14555 0 : return GF_BAD_PARAM;
14556 : }
14557 8835 : }
14558 : static GF_Err TouchSensor_get_field(GF_Node *node, GF_FieldInfo *info)
14559 : {
14560 52900 : switch (info->fieldIndex) {
14561 : case 0:
14562 6420 : info->name = "enabled";
14563 6420 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14564 6420 : info->fieldType = GF_SG_VRML_SFBOOL;
14565 6420 : info->far_ptr = & ((M_TouchSensor *) node)->enabled;
14566 6420 : return GF_OK;
14567 : case 1:
14568 2616 : info->name = "hitNormal_changed";
14569 2616 : info->eventType = GF_SG_EVENT_OUT;
14570 2616 : info->fieldType = GF_SG_VRML_SFVEC3F;
14571 2616 : info->far_ptr = & ((M_TouchSensor *) node)->hitNormal_changed;
14572 2616 : return GF_OK;
14573 : case 2:
14574 2696 : info->name = "hitPoint_changed";
14575 2696 : info->eventType = GF_SG_EVENT_OUT;
14576 2696 : info->fieldType = GF_SG_VRML_SFVEC3F;
14577 2696 : info->far_ptr = & ((M_TouchSensor *) node)->hitPoint_changed;
14578 2696 : return GF_OK;
14579 : case 3:
14580 2616 : info->name = "hitTexCoord_changed";
14581 2616 : info->eventType = GF_SG_EVENT_OUT;
14582 2616 : info->fieldType = GF_SG_VRML_SFVEC2F;
14583 2616 : info->far_ptr = & ((M_TouchSensor *) node)->hitTexCoord_changed;
14584 2616 : return GF_OK;
14585 : case 4:
14586 5158 : info->name = "isActive";
14587 5158 : info->eventType = GF_SG_EVENT_OUT;
14588 5158 : info->fieldType = GF_SG_VRML_SFBOOL;
14589 5158 : info->far_ptr = & ((M_TouchSensor *) node)->isActive;
14590 5158 : return GF_OK;
14591 : case 5:
14592 4280 : info->name = "isOver";
14593 4280 : info->eventType = GF_SG_EVENT_OUT;
14594 4280 : info->fieldType = GF_SG_VRML_SFBOOL;
14595 4280 : info->far_ptr = & ((M_TouchSensor *) node)->isOver;
14596 4280 : return GF_OK;
14597 : case 6:
14598 2664 : info->name = "touchTime";
14599 2664 : info->eventType = GF_SG_EVENT_OUT;
14600 2664 : info->fieldType = GF_SG_VRML_SFTIME;
14601 2664 : info->far_ptr = & ((M_TouchSensor *) node)->touchTime;
14602 2664 : return GF_OK;
14603 : default:
14604 0 : return GF_BAD_PARAM;
14605 : }
14606 26450 : }
14607 :
14608 :
14609 : static s32 TouchSensor_get_field_index_by_name(char *name)
14610 : {
14611 4320 : if (!strcmp("enabled", name)) return 0;
14612 2160 : if (!strcmp("hitNormal_changed", name)) return 1;
14613 2200 : if (!strcmp("hitPoint_changed", name)) return 2;
14614 2120 : if (!strcmp("hitTexCoord_changed", name)) return 3;
14615 3396 : if (!strcmp("isActive", name)) return 4;
14616 1664 : if (!strcmp("isOver", name)) return 5;
14617 48 : if (!strcmp("touchTime", name)) return 6;
14618 0 : return -1;
14619 2160 : }
14620 : static Bool TouchSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
14621 : {
14622 : switch (FieldIndex) {
14623 : default:
14624 0 : return 0;
14625 : }
14626 : }
14627 :
14628 :
14629 :
14630 : GF_Node *TouchSensor_Create()
14631 : {
14632 : M_TouchSensor *p;
14633 17871 : GF_SAFEALLOC(p, M_TouchSensor);
14634 5957 : if(!p) return NULL;
14635 5957 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TouchSensor);
14636 :
14637 : /*default field values*/
14638 5957 : p->enabled = 1;
14639 5957 : return (GF_Node *)p;
14640 5957 : }
14641 :
14642 :
14643 : /*
14644 : Transform Node deletion
14645 : */
14646 :
14647 : static void Transform_Del(GF_Node *node)
14648 : {
14649 4942 : M_Transform *p = (M_Transform *) node;
14650 2471 : gf_sg_vrml_parent_destroy((GF_Node *) p);
14651 2471 : gf_node_free((GF_Node *) p);
14652 2471 : }
14653 :
14654 : static const u16 Transform_Def2All[] = { 2, 3, 4, 5, 6, 7};
14655 : static const u16 Transform_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
14656 : static const u16 Transform_Out2All[] = { 2, 3, 4, 5, 6, 7};
14657 : static const u16 Transform_Dyn2All[] = { 2, 4, 5, 6, 7};
14658 :
14659 : static u32 Transform_get_field_count(GF_Node *node, u8 IndexMode)
14660 : {
14661 4776 : switch(IndexMode) {
14662 : case GF_SG_FIELD_CODING_IN:
14663 225 : return 8;
14664 : case GF_SG_FIELD_CODING_DEF:
14665 1152 : return 6;
14666 : case GF_SG_FIELD_CODING_OUT:
14667 0 : return 6;
14668 : case GF_SG_FIELD_CODING_DYN:
14669 0 : return 5;
14670 : default:
14671 1011 : return 8;
14672 : }
14673 2388 : }
14674 :
14675 : static GF_Err Transform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
14676 : {
14677 6492 : switch(IndexMode) {
14678 : case GF_SG_FIELD_CODING_IN:
14679 405 : *allField = Transform_In2All[inField];
14680 405 : return GF_OK;
14681 : case GF_SG_FIELD_CODING_DEF:
14682 2841 : *allField = Transform_Def2All[inField];
14683 2841 : return GF_OK;
14684 : case GF_SG_FIELD_CODING_OUT:
14685 0 : *allField = Transform_Out2All[inField];
14686 0 : return GF_OK;
14687 : case GF_SG_FIELD_CODING_DYN:
14688 0 : *allField = Transform_Dyn2All[inField];
14689 0 : return GF_OK;
14690 : default:
14691 0 : return GF_BAD_PARAM;
14692 : }
14693 3246 : }
14694 : static GF_Err Transform_get_field(GF_Node *node, GF_FieldInfo *info)
14695 : {
14696 40152 : switch (info->fieldIndex) {
14697 : case 0:
14698 1011 : info->name = "addChildren";
14699 1011 : info->eventType = GF_SG_EVENT_IN;
14700 1011 : info->on_event_in = ((M_Transform *)node)->on_addChildren;
14701 1011 : info->fieldType = GF_SG_VRML_MFNODE;
14702 1011 : info->NDTtype = NDT_SF3DNode;
14703 1011 : info->far_ptr = & ((M_Transform *)node)->addChildren;
14704 1011 : return GF_OK;
14705 : case 1:
14706 1011 : info->name = "removeChildren";
14707 1011 : info->eventType = GF_SG_EVENT_IN;
14708 1011 : info->on_event_in = ((M_Transform *)node)->on_removeChildren;
14709 1011 : info->fieldType = GF_SG_VRML_MFNODE;
14710 1011 : info->NDTtype = NDT_SF3DNode;
14711 1011 : info->far_ptr = & ((M_Transform *)node)->removeChildren;
14712 1011 : return GF_OK;
14713 : case 2:
14714 2534 : info->name = "center";
14715 2534 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14716 2534 : info->fieldType = GF_SG_VRML_SFVEC3F;
14717 2534 : info->far_ptr = & ((M_Transform *) node)->center;
14718 2534 : return GF_OK;
14719 : case 3:
14720 3187 : info->name = "children";
14721 3187 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14722 3187 : info->fieldType = GF_SG_VRML_MFNODE;
14723 3187 : info->NDTtype = NDT_SF3DNode;
14724 3187 : info->far_ptr = & ((M_Transform *)node)->children;
14725 3187 : return GF_OK;
14726 : case 4:
14727 3038 : info->name = "rotation";
14728 3038 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14729 3038 : info->fieldType = GF_SG_VRML_SFROTATION;
14730 3038 : info->far_ptr = & ((M_Transform *) node)->rotation;
14731 3038 : return GF_OK;
14732 : case 5:
14733 2633 : info->name = "scale";
14734 2633 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14735 2633 : info->fieldType = GF_SG_VRML_SFVEC3F;
14736 2633 : info->far_ptr = & ((M_Transform *) node)->scale;
14737 2633 : return GF_OK;
14738 : case 6:
14739 2549 : info->name = "scaleOrientation";
14740 2549 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14741 2549 : info->fieldType = GF_SG_VRML_SFROTATION;
14742 2549 : info->far_ptr = & ((M_Transform *) node)->scaleOrientation;
14743 2549 : return GF_OK;
14744 : case 7:
14745 4113 : info->name = "translation";
14746 4113 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14747 4113 : info->fieldType = GF_SG_VRML_SFVEC3F;
14748 4113 : info->far_ptr = & ((M_Transform *) node)->translation;
14749 4113 : return GF_OK;
14750 : default:
14751 0 : return GF_BAD_PARAM;
14752 : }
14753 20076 : }
14754 :
14755 :
14756 : static s32 Transform_get_field_index_by_name(char *name)
14757 : {
14758 2292 : if (!strcmp("addChildren", name)) return 0;
14759 1146 : if (!strcmp("removeChildren", name)) return 1;
14760 1146 : if (!strcmp("center", name)) return 2;
14761 1658 : if (!strcmp("children", name)) return 3;
14762 802 : if (!strcmp("rotation", name)) return 4;
14763 498 : if (!strcmp("scale", name)) return 5;
14764 438 : if (!strcmp("scaleOrientation", name)) return 6;
14765 860 : if (!strcmp("translation", name)) return 7;
14766 0 : return -1;
14767 1146 : }
14768 : static Bool Transform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
14769 : {
14770 0 : switch (FieldIndex) {
14771 : case 2:
14772 0 : *AType = 1;
14773 0 : *QType = 1;
14774 0 : *b_min = FIX_MIN;
14775 0 : *b_max = FIX_MAX;
14776 0 : return 1;
14777 : case 4:
14778 0 : *AType = 10;
14779 0 : *QType = 10;
14780 0 : return 1;
14781 : case 5:
14782 0 : *AType = 11;
14783 0 : *QType = 7;
14784 0 : *b_min = FLT2FIX(0);
14785 0 : *b_max = FIX_MAX;
14786 0 : return 1;
14787 : case 6:
14788 0 : *AType = 10;
14789 0 : *QType = 10;
14790 0 : return 1;
14791 : case 7:
14792 0 : *AType = 1;
14793 0 : *QType = 1;
14794 0 : *b_min = FIX_MIN;
14795 0 : *b_max = FIX_MAX;
14796 0 : return 1;
14797 : default:
14798 0 : return 0;
14799 : }
14800 0 : }
14801 :
14802 :
14803 :
14804 : GF_Node *Transform_Create()
14805 : {
14806 : M_Transform *p;
14807 7413 : GF_SAFEALLOC(p, M_Transform);
14808 2471 : if(!p) return NULL;
14809 2471 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Transform);
14810 2471 : gf_sg_vrml_parent_setup((GF_Node *) p);
14811 :
14812 : /*default field values*/
14813 2471 : p->center.x = FLT2FIX(0);
14814 2471 : p->center.y = FLT2FIX(0);
14815 2471 : p->center.z = FLT2FIX(0);
14816 2471 : p->rotation.x = FLT2FIX(0);
14817 2471 : p->rotation.y = FLT2FIX(0);
14818 2471 : p->rotation.z = FLT2FIX(1);
14819 2471 : p->rotation.q = FLT2FIX(0);
14820 2471 : p->scale.x = FLT2FIX(1);
14821 2471 : p->scale.y = FLT2FIX(1);
14822 2471 : p->scale.z = FLT2FIX(1);
14823 2471 : p->scaleOrientation.x = FLT2FIX(0);
14824 2471 : p->scaleOrientation.y = FLT2FIX(0);
14825 2471 : p->scaleOrientation.z = FLT2FIX(1);
14826 2471 : p->scaleOrientation.q = FLT2FIX(0);
14827 2471 : p->translation.x = FLT2FIX(0);
14828 2471 : p->translation.y = FLT2FIX(0);
14829 2471 : p->translation.z = FLT2FIX(0);
14830 2471 : return (GF_Node *)p;
14831 2471 : }
14832 :
14833 :
14834 : /*
14835 : Transform2D Node deletion
14836 : */
14837 :
14838 : static void Transform2D_Del(GF_Node *node)
14839 : {
14840 58362 : M_Transform2D *p = (M_Transform2D *) node;
14841 29181 : gf_sg_vrml_parent_destroy((GF_Node *) p);
14842 29181 : gf_node_free((GF_Node *) p);
14843 29181 : }
14844 :
14845 : static const u16 Transform2D_Def2All[] = { 2, 3, 4, 5, 6, 7};
14846 : static const u16 Transform2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
14847 : static const u16 Transform2D_Out2All[] = { 2, 3, 4, 5, 6, 7};
14848 : static const u16 Transform2D_Dyn2All[] = { 3, 4, 5, 6, 7};
14849 :
14850 : static u32 Transform2D_get_field_count(GF_Node *node, u8 IndexMode)
14851 : {
14852 57216 : switch(IndexMode) {
14853 : case GF_SG_FIELD_CODING_IN:
14854 2651 : return 8;
14855 : case GF_SG_FIELD_CODING_DEF:
14856 13328 : return 6;
14857 : case GF_SG_FIELD_CODING_OUT:
14858 36 : return 6;
14859 : case GF_SG_FIELD_CODING_DYN:
14860 0 : return 5;
14861 : default:
14862 12593 : return 8;
14863 : }
14864 28608 : }
14865 :
14866 : static GF_Err Transform2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
14867 : {
14868 70670 : switch(IndexMode) {
14869 : case GF_SG_FIELD_CODING_IN:
14870 4384 : *allField = Transform2D_In2All[inField];
14871 4384 : return GF_OK;
14872 : case GF_SG_FIELD_CODING_DEF:
14873 30923 : *allField = Transform2D_Def2All[inField];
14874 30923 : return GF_OK;
14875 : case GF_SG_FIELD_CODING_OUT:
14876 28 : *allField = Transform2D_Out2All[inField];
14877 28 : return GF_OK;
14878 : case GF_SG_FIELD_CODING_DYN:
14879 0 : *allField = Transform2D_Dyn2All[inField];
14880 0 : return GF_OK;
14881 : default:
14882 0 : return GF_BAD_PARAM;
14883 : }
14884 35335 : }
14885 : static GF_Err Transform2D_get_field(GF_Node *node, GF_FieldInfo *info)
14886 : {
14887 473302 : switch (info->fieldIndex) {
14888 : case 0:
14889 12264 : info->name = "addChildren";
14890 12264 : info->eventType = GF_SG_EVENT_IN;
14891 12264 : info->on_event_in = ((M_Transform2D *)node)->on_addChildren;
14892 12264 : info->fieldType = GF_SG_VRML_MFNODE;
14893 12264 : info->NDTtype = NDT_SF2DNode;
14894 12264 : info->far_ptr = & ((M_Transform2D *)node)->addChildren;
14895 12264 : return GF_OK;
14896 : case 1:
14897 12256 : info->name = "removeChildren";
14898 12256 : info->eventType = GF_SG_EVENT_IN;
14899 12256 : info->on_event_in = ((M_Transform2D *)node)->on_removeChildren;
14900 12256 : info->fieldType = GF_SG_VRML_MFNODE;
14901 12256 : info->NDTtype = NDT_SF2DNode;
14902 12256 : info->far_ptr = & ((M_Transform2D *)node)->removeChildren;
14903 12256 : return GF_OK;
14904 : case 2:
14905 40082 : info->name = "children";
14906 40082 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14907 40082 : info->fieldType = GF_SG_VRML_MFNODE;
14908 40082 : info->NDTtype = NDT_SF2DNode;
14909 40082 : info->far_ptr = & ((M_Transform2D *)node)->children;
14910 40082 : return GF_OK;
14911 : case 3:
14912 30596 : info->name = "center";
14913 30596 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14914 30596 : info->fieldType = GF_SG_VRML_SFVEC2F;
14915 30596 : info->far_ptr = & ((M_Transform2D *) node)->center;
14916 30596 : return GF_OK;
14917 : case 4:
14918 30848 : info->name = "rotationAngle";
14919 30848 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14920 30848 : info->fieldType = GF_SG_VRML_SFFLOAT;
14921 30848 : info->far_ptr = & ((M_Transform2D *) node)->rotationAngle;
14922 30848 : return GF_OK;
14923 : case 5:
14924 32396 : info->name = "scale";
14925 32396 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14926 32396 : info->fieldType = GF_SG_VRML_SFVEC2F;
14927 32396 : info->far_ptr = & ((M_Transform2D *) node)->scale;
14928 32396 : return GF_OK;
14929 : case 6:
14930 30641 : info->name = "scaleOrientation";
14931 30641 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14932 30641 : info->fieldType = GF_SG_VRML_SFFLOAT;
14933 30641 : info->far_ptr = & ((M_Transform2D *) node)->scaleOrientation;
14934 30641 : return GF_OK;
14935 : case 7:
14936 47568 : info->name = "translation";
14937 47568 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14938 47568 : info->fieldType = GF_SG_VRML_SFVEC2F;
14939 47568 : info->far_ptr = & ((M_Transform2D *) node)->translation;
14940 47568 : return GF_OK;
14941 : default:
14942 0 : return GF_BAD_PARAM;
14943 : }
14944 236651 : }
14945 :
14946 :
14947 : static s32 Transform2D_get_field_index_by_name(char *name)
14948 : {
14949 57060 : if (!strcmp("addChildren", name)) return 0;
14950 28522 : if (!strcmp("removeChildren", name)) return 1;
14951 36050 : if (!strcmp("children", name)) return 2;
14952 20978 : if (!strcmp("center", name)) return 3;
14953 21063 : if (!strcmp("rotationAngle", name)) return 4;
14954 21500 : if (!strcmp("scale", name)) return 5;
14955 20298 : if (!strcmp("scaleOrientation", name)) return 6;
14956 24990 : if (!strcmp("translation", name)) return 7;
14957 15558 : return -1;
14958 28526 : }
14959 : static Bool Transform2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
14960 : {
14961 14 : switch (FieldIndex) {
14962 : case 3:
14963 0 : *AType = 2;
14964 0 : *QType = 2;
14965 0 : *b_min = FIX_MIN;
14966 0 : *b_max = FIX_MAX;
14967 0 : return 1;
14968 : case 4:
14969 0 : *AType = 6;
14970 0 : *QType = 6;
14971 0 : *b_min = FLT2FIX(0);
14972 0 : *b_max = FLT2FIX(6.2831853);
14973 0 : return 1;
14974 : case 5:
14975 7 : *AType = 12;
14976 7 : *QType = 7;
14977 7 : *b_min = FIX_MIN;
14978 7 : *b_max = FIX_MAX;
14979 7 : return 1;
14980 : case 6:
14981 0 : *AType = 6;
14982 0 : *QType = 6;
14983 0 : *b_min = FLT2FIX(0);
14984 0 : *b_max = FLT2FIX(6.2831853);
14985 0 : return 1;
14986 : case 7:
14987 0 : *AType = 2;
14988 0 : *QType = 2;
14989 0 : *b_min = FIX_MIN;
14990 0 : *b_max = FIX_MAX;
14991 0 : return 1;
14992 : default:
14993 0 : return 0;
14994 : }
14995 7 : }
14996 :
14997 :
14998 :
14999 : GF_Node *Transform2D_Create()
15000 : {
15001 : M_Transform2D *p;
15002 87543 : GF_SAFEALLOC(p, M_Transform2D);
15003 29181 : if(!p) return NULL;
15004 29181 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Transform2D);
15005 29181 : gf_sg_vrml_parent_setup((GF_Node *) p);
15006 :
15007 : /*default field values*/
15008 29181 : p->center.x = FLT2FIX(0);
15009 29181 : p->center.y = FLT2FIX(0);
15010 29181 : p->rotationAngle = FLT2FIX(0);
15011 29181 : p->scale.x = FLT2FIX(1);
15012 29181 : p->scale.y = FLT2FIX(1);
15013 29181 : p->scaleOrientation = FLT2FIX(0);
15014 29181 : p->translation.x = FLT2FIX(0);
15015 29181 : p->translation.y = FLT2FIX(0);
15016 29181 : return (GF_Node *)p;
15017 29181 : }
15018 :
15019 :
15020 : /*
15021 : Valuator Node deletion
15022 : */
15023 :
15024 : static void Valuator_Del(GF_Node *node)
15025 : {
15026 13056 : M_Valuator *p = (M_Valuator *) node;
15027 6528 : gf_sg_mfcolor_del(p->inMFColor);
15028 6528 : gf_sg_mffloat_del(p->inMFFloat);
15029 6528 : gf_sg_mfint32_del(p->inMFInt32);
15030 6528 : gf_sg_mfrotation_del(p->inMFRotation);
15031 6528 : gf_sg_sfstring_del(p->inSFString);
15032 6528 : gf_sg_mfstring_del(p->inMFString);
15033 6528 : gf_sg_mfvec2f_del(p->inMFVec2f);
15034 6528 : gf_sg_mfvec3f_del(p->inMFVec3f);
15035 6528 : gf_sg_mfcolor_del(p->outMFColor);
15036 6528 : gf_sg_mffloat_del(p->outMFFloat);
15037 6528 : gf_sg_mfint32_del(p->outMFInt32);
15038 6528 : gf_sg_mfrotation_del(p->outMFRotation);
15039 6528 : gf_sg_sfstring_del(p->outSFString);
15040 6528 : gf_sg_mfstring_del(p->outMFString);
15041 6528 : gf_sg_mfvec2f_del(p->outMFVec2f);
15042 6528 : gf_sg_mfvec3f_del(p->outMFVec3f);
15043 6528 : gf_node_free((GF_Node *) p);
15044 6528 : }
15045 :
15046 : static const u16 Valuator_Def2All[] = { 32, 33, 34, 35, 36, 37, 38, 39, 40};
15047 : static const u16 Valuator_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 32, 33, 34, 35, 36, 37, 38, 39, 40};
15048 : static const u16 Valuator_Out2All[] = { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40};
15049 :
15050 : static u32 Valuator_get_field_count(GF_Node *node, u8 IndexMode)
15051 : {
15052 23448 : switch(IndexMode) {
15053 : case GF_SG_FIELD_CODING_IN:
15054 2915 : return 25;
15055 : case GF_SG_FIELD_CODING_DEF:
15056 2882 : return 9;
15057 : case GF_SG_FIELD_CODING_OUT:
15058 2861 : return 25;
15059 : case GF_SG_FIELD_CODING_DYN:
15060 0 : return 0;
15061 : default:
15062 3066 : return 41;
15063 : }
15064 11724 : }
15065 :
15066 : static GF_Err Valuator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
15067 : {
15068 49462 : switch(IndexMode) {
15069 : case GF_SG_FIELD_CODING_IN:
15070 9433 : *allField = Valuator_In2All[inField];
15071 9433 : return GF_OK;
15072 : case GF_SG_FIELD_CODING_DEF:
15073 5863 : *allField = Valuator_Def2All[inField];
15074 5863 : return GF_OK;
15075 : case GF_SG_FIELD_CODING_OUT:
15076 9435 : *allField = Valuator_Out2All[inField];
15077 9435 : return GF_OK;
15078 : default:
15079 0 : return GF_BAD_PARAM;
15080 : }
15081 24731 : }
15082 : static GF_Err Valuator_get_field(GF_Node *node, GF_FieldInfo *info)
15083 : {
15084 339182 : switch (info->fieldIndex) {
15085 : case 0:
15086 3158 : info->name = "inSFBool";
15087 3158 : info->eventType = GF_SG_EVENT_IN;
15088 3158 : info->on_event_in = ((M_Valuator *)node)->on_inSFBool;
15089 3158 : info->fieldType = GF_SG_VRML_SFBOOL;
15090 3158 : info->far_ptr = & ((M_Valuator *) node)->inSFBool;
15091 3158 : return GF_OK;
15092 : case 1:
15093 3084 : info->name = "inSFColor";
15094 3084 : info->eventType = GF_SG_EVENT_IN;
15095 3084 : info->on_event_in = ((M_Valuator *)node)->on_inSFColor;
15096 3084 : info->fieldType = GF_SG_VRML_SFCOLOR;
15097 3084 : info->far_ptr = & ((M_Valuator *) node)->inSFColor;
15098 3084 : return GF_OK;
15099 : case 2:
15100 3009 : info->name = "inMFColor";
15101 3009 : info->eventType = GF_SG_EVENT_IN;
15102 3009 : info->on_event_in = ((M_Valuator *)node)->on_inMFColor;
15103 3009 : info->fieldType = GF_SG_VRML_MFCOLOR;
15104 3009 : info->far_ptr = & ((M_Valuator *) node)->inMFColor;
15105 3009 : return GF_OK;
15106 : case 3:
15107 3026 : info->name = "inSFFloat";
15108 3026 : info->eventType = GF_SG_EVENT_IN;
15109 3026 : info->on_event_in = ((M_Valuator *)node)->on_inSFFloat;
15110 3026 : info->fieldType = GF_SG_VRML_SFFLOAT;
15111 3026 : info->far_ptr = & ((M_Valuator *) node)->inSFFloat;
15112 3026 : return GF_OK;
15113 : case 4:
15114 3009 : info->name = "inMFFloat";
15115 3009 : info->eventType = GF_SG_EVENT_IN;
15116 3009 : info->on_event_in = ((M_Valuator *)node)->on_inMFFloat;
15117 3009 : info->fieldType = GF_SG_VRML_MFFLOAT;
15118 3009 : info->far_ptr = & ((M_Valuator *) node)->inMFFloat;
15119 3009 : return GF_OK;
15120 : case 5:
15121 3121 : info->name = "inSFInt32";
15122 3121 : info->eventType = GF_SG_EVENT_IN;
15123 3121 : info->on_event_in = ((M_Valuator *)node)->on_inSFInt32;
15124 3121 : info->fieldType = GF_SG_VRML_SFINT32;
15125 3121 : info->far_ptr = & ((M_Valuator *) node)->inSFInt32;
15126 3121 : return GF_OK;
15127 : case 6:
15128 3009 : info->name = "inMFInt32";
15129 3009 : info->eventType = GF_SG_EVENT_IN;
15130 3009 : info->on_event_in = ((M_Valuator *)node)->on_inMFInt32;
15131 3009 : info->fieldType = GF_SG_VRML_MFINT32;
15132 3009 : info->far_ptr = & ((M_Valuator *) node)->inMFInt32;
15133 3009 : return GF_OK;
15134 : case 7:
15135 3009 : info->name = "inSFRotation";
15136 3009 : info->eventType = GF_SG_EVENT_IN;
15137 3009 : info->on_event_in = ((M_Valuator *)node)->on_inSFRotation;
15138 3009 : info->fieldType = GF_SG_VRML_SFROTATION;
15139 3009 : info->far_ptr = & ((M_Valuator *) node)->inSFRotation;
15140 3009 : return GF_OK;
15141 : case 8:
15142 3009 : info->name = "inMFRotation";
15143 3009 : info->eventType = GF_SG_EVENT_IN;
15144 3009 : info->on_event_in = ((M_Valuator *)node)->on_inMFRotation;
15145 3009 : info->fieldType = GF_SG_VRML_MFROTATION;
15146 3009 : info->far_ptr = & ((M_Valuator *) node)->inMFRotation;
15147 3009 : return GF_OK;
15148 : case 9:
15149 3025 : info->name = "inSFString";
15150 3025 : info->eventType = GF_SG_EVENT_IN;
15151 3025 : info->on_event_in = ((M_Valuator *)node)->on_inSFString;
15152 3025 : info->fieldType = GF_SG_VRML_SFSTRING;
15153 3025 : info->far_ptr = & ((M_Valuator *) node)->inSFString;
15154 3025 : return GF_OK;
15155 : case 10:
15156 3009 : info->name = "inMFString";
15157 3009 : info->eventType = GF_SG_EVENT_IN;
15158 3009 : info->on_event_in = ((M_Valuator *)node)->on_inMFString;
15159 3009 : info->fieldType = GF_SG_VRML_MFSTRING;
15160 3009 : info->far_ptr = & ((M_Valuator *) node)->inMFString;
15161 3009 : return GF_OK;
15162 : case 11:
15163 3113 : info->name = "inSFTime";
15164 3113 : info->eventType = GF_SG_EVENT_IN;
15165 3113 : info->on_event_in = ((M_Valuator *)node)->on_inSFTime;
15166 3113 : info->fieldType = GF_SG_VRML_SFTIME;
15167 3113 : info->far_ptr = & ((M_Valuator *) node)->inSFTime;
15168 3113 : return GF_OK;
15169 : case 12:
15170 7024 : info->name = "inSFVec2f";
15171 7024 : info->eventType = GF_SG_EVENT_IN;
15172 7024 : info->on_event_in = ((M_Valuator *)node)->on_inSFVec2f;
15173 7024 : info->fieldType = GF_SG_VRML_SFVEC2F;
15174 7024 : info->far_ptr = & ((M_Valuator *) node)->inSFVec2f;
15175 7024 : return GF_OK;
15176 : case 13:
15177 3017 : info->name = "inMFVec2f";
15178 3017 : info->eventType = GF_SG_EVENT_IN;
15179 3017 : info->on_event_in = ((M_Valuator *)node)->on_inMFVec2f;
15180 3017 : info->fieldType = GF_SG_VRML_MFVEC2F;
15181 3017 : info->far_ptr = & ((M_Valuator *) node)->inMFVec2f;
15182 3017 : return GF_OK;
15183 : case 14:
15184 3049 : info->name = "inSFVec3f";
15185 3049 : info->eventType = GF_SG_EVENT_IN;
15186 3049 : info->on_event_in = ((M_Valuator *)node)->on_inSFVec3f;
15187 3049 : info->fieldType = GF_SG_VRML_SFVEC3F;
15188 3049 : info->far_ptr = & ((M_Valuator *) node)->inSFVec3f;
15189 3049 : return GF_OK;
15190 : case 15:
15191 3009 : info->name = "inMFVec3f";
15192 3009 : info->eventType = GF_SG_EVENT_IN;
15193 3009 : info->on_event_in = ((M_Valuator *)node)->on_inMFVec3f;
15194 3009 : info->fieldType = GF_SG_VRML_MFVEC3F;
15195 3009 : info->far_ptr = & ((M_Valuator *) node)->inMFVec3f;
15196 3009 : return GF_OK;
15197 : case 16:
15198 3041 : info->name = "outSFBool";
15199 3041 : info->eventType = GF_SG_EVENT_OUT;
15200 3041 : info->fieldType = GF_SG_VRML_SFBOOL;
15201 3041 : info->far_ptr = & ((M_Valuator *) node)->outSFBool;
15202 3041 : return GF_OK;
15203 : case 17:
15204 3049 : info->name = "outSFColor";
15205 3049 : info->eventType = GF_SG_EVENT_OUT;
15206 3049 : info->fieldType = GF_SG_VRML_SFCOLOR;
15207 3049 : info->far_ptr = & ((M_Valuator *) node)->outSFColor;
15208 3049 : return GF_OK;
15209 : case 18:
15210 3009 : info->name = "outMFColor";
15211 3009 : info->eventType = GF_SG_EVENT_OUT;
15212 3009 : info->fieldType = GF_SG_VRML_MFCOLOR;
15213 3009 : info->far_ptr = & ((M_Valuator *) node)->outMFColor;
15214 3009 : return GF_OK;
15215 : case 19:
15216 3073 : info->name = "outSFFloat";
15217 3073 : info->eventType = GF_SG_EVENT_OUT;
15218 3073 : info->fieldType = GF_SG_VRML_SFFLOAT;
15219 3073 : info->far_ptr = & ((M_Valuator *) node)->outSFFloat;
15220 3073 : return GF_OK;
15221 : case 20:
15222 3017 : info->name = "outMFFloat";
15223 3017 : info->eventType = GF_SG_EVENT_OUT;
15224 3017 : info->fieldType = GF_SG_VRML_MFFLOAT;
15225 3017 : info->far_ptr = & ((M_Valuator *) node)->outMFFloat;
15226 3017 : return GF_OK;
15227 : case 21:
15228 3110 : info->name = "outSFInt32";
15229 3110 : info->eventType = GF_SG_EVENT_OUT;
15230 3110 : info->fieldType = GF_SG_VRML_SFINT32;
15231 3110 : info->far_ptr = & ((M_Valuator *) node)->outSFInt32;
15232 3110 : return GF_OK;
15233 : case 22:
15234 3009 : info->name = "outMFInt32";
15235 3009 : info->eventType = GF_SG_EVENT_OUT;
15236 3009 : info->fieldType = GF_SG_VRML_MFINT32;
15237 3009 : info->far_ptr = & ((M_Valuator *) node)->outMFInt32;
15238 3009 : return GF_OK;
15239 : case 23:
15240 3009 : info->name = "outSFRotation";
15241 3009 : info->eventType = GF_SG_EVENT_OUT;
15242 3009 : info->fieldType = GF_SG_VRML_SFROTATION;
15243 3009 : info->far_ptr = & ((M_Valuator *) node)->outSFRotation;
15244 3009 : return GF_OK;
15245 : case 24:
15246 3009 : info->name = "outMFRotation";
15247 3009 : info->eventType = GF_SG_EVENT_OUT;
15248 3009 : info->fieldType = GF_SG_VRML_MFROTATION;
15249 3009 : info->far_ptr = & ((M_Valuator *) node)->outMFRotation;
15250 3009 : return GF_OK;
15251 : case 25:
15252 3009 : info->name = "outSFString";
15253 3009 : info->eventType = GF_SG_EVENT_OUT;
15254 3009 : info->fieldType = GF_SG_VRML_SFSTRING;
15255 3009 : info->far_ptr = & ((M_Valuator *) node)->outSFString;
15256 3009 : return GF_OK;
15257 : case 26:
15258 3269 : info->name = "outMFString";
15259 3269 : info->eventType = GF_SG_EVENT_OUT;
15260 3269 : info->fieldType = GF_SG_VRML_MFSTRING;
15261 3269 : info->far_ptr = & ((M_Valuator *) node)->outMFString;
15262 3269 : return GF_OK;
15263 : case 27:
15264 3017 : info->name = "outSFTime";
15265 3017 : info->eventType = GF_SG_EVENT_OUT;
15266 3017 : info->fieldType = GF_SG_VRML_SFTIME;
15267 3017 : info->far_ptr = & ((M_Valuator *) node)->outSFTime;
15268 3017 : return GF_OK;
15269 : case 28:
15270 5169 : info->name = "outSFVec2f";
15271 5169 : info->eventType = GF_SG_EVENT_OUT;
15272 5169 : info->fieldType = GF_SG_VRML_SFVEC2F;
15273 5169 : info->far_ptr = & ((M_Valuator *) node)->outSFVec2f;
15274 5169 : return GF_OK;
15275 : case 29:
15276 3009 : info->name = "outMFVec2f";
15277 3009 : info->eventType = GF_SG_EVENT_OUT;
15278 3009 : info->fieldType = GF_SG_VRML_MFVEC2F;
15279 3009 : info->far_ptr = & ((M_Valuator *) node)->outMFVec2f;
15280 3009 : return GF_OK;
15281 : case 30:
15282 3009 : info->name = "outSFVec3f";
15283 3009 : info->eventType = GF_SG_EVENT_OUT;
15284 3009 : info->fieldType = GF_SG_VRML_SFVEC3F;
15285 3009 : info->far_ptr = & ((M_Valuator *) node)->outSFVec3f;
15286 3009 : return GF_OK;
15287 : case 31:
15288 3009 : info->name = "outMFVec3f";
15289 3009 : info->eventType = GF_SG_EVENT_OUT;
15290 3009 : info->fieldType = GF_SG_VRML_MFVEC3F;
15291 3009 : info->far_ptr = & ((M_Valuator *) node)->outMFVec3f;
15292 3009 : return GF_OK;
15293 : case 32:
15294 7483 : info->name = "Factor1";
15295 7483 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15296 7483 : info->fieldType = GF_SG_VRML_SFFLOAT;
15297 7483 : info->far_ptr = & ((M_Valuator *) node)->Factor1;
15298 7483 : return GF_OK;
15299 : case 33:
15300 7409 : info->name = "Factor2";
15301 7409 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15302 7409 : info->fieldType = GF_SG_VRML_SFFLOAT;
15303 7409 : info->far_ptr = & ((M_Valuator *) node)->Factor2;
15304 7409 : return GF_OK;
15305 : case 34:
15306 7334 : info->name = "Factor3";
15307 7334 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15308 7334 : info->fieldType = GF_SG_VRML_SFFLOAT;
15309 7334 : info->far_ptr = & ((M_Valuator *) node)->Factor3;
15310 7334 : return GF_OK;
15311 : case 35:
15312 7319 : info->name = "Factor4";
15313 7319 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15314 7319 : info->fieldType = GF_SG_VRML_SFFLOAT;
15315 7319 : info->far_ptr = & ((M_Valuator *) node)->Factor4;
15316 7319 : return GF_OK;
15317 : case 36:
15318 7378 : info->name = "Offset1";
15319 7378 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15320 7378 : info->fieldType = GF_SG_VRML_SFFLOAT;
15321 7378 : info->far_ptr = & ((M_Valuator *) node)->Offset1;
15322 7378 : return GF_OK;
15323 : case 37:
15324 7349 : info->name = "Offset2";
15325 7349 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15326 7349 : info->fieldType = GF_SG_VRML_SFFLOAT;
15327 7349 : info->far_ptr = & ((M_Valuator *) node)->Offset2;
15328 7349 : return GF_OK;
15329 : case 38:
15330 7274 : info->name = "Offset3";
15331 7274 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15332 7274 : info->fieldType = GF_SG_VRML_SFFLOAT;
15333 7274 : info->far_ptr = & ((M_Valuator *) node)->Offset3;
15334 7274 : return GF_OK;
15335 : case 39:
15336 7274 : info->name = "Offset4";
15337 7274 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15338 7274 : info->fieldType = GF_SG_VRML_SFFLOAT;
15339 7274 : info->far_ptr = & ((M_Valuator *) node)->Offset4;
15340 7274 : return GF_OK;
15341 : case 40:
15342 7274 : info->name = "Sum";
15343 7274 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15344 7274 : info->fieldType = GF_SG_VRML_SFBOOL;
15345 7274 : info->far_ptr = & ((M_Valuator *) node)->Sum;
15346 7274 : return GF_OK;
15347 : default:
15348 0 : return GF_BAD_PARAM;
15349 : }
15350 169591 : }
15351 :
15352 :
15353 : static s32 Valuator_get_field_index_by_name(char *name)
15354 : {
15355 5606 : if (!strcmp("inSFBool", name)) return 0;
15356 2727 : if (!strcmp("inSFColor", name)) return 1;
15357 2687 : if (!strcmp("inMFColor", name)) return 2;
15358 2696 : if (!strcmp("inSFFloat", name)) return 3;
15359 2678 : if (!strcmp("inMFFloat", name)) return 4;
15360 2714 : if (!strcmp("inSFInt32", name)) return 5;
15361 2642 : if (!strcmp("inMFInt32", name)) return 6;
15362 2642 : if (!strcmp("inSFRotation", name)) return 7;
15363 2642 : if (!strcmp("inMFRotation", name)) return 8;
15364 2650 : if (!strcmp("inSFString", name)) return 9;
15365 2634 : if (!strcmp("inMFString", name)) return 10;
15366 2686 : if (!strcmp("inSFTime", name)) return 11;
15367 3662 : if (!strcmp("inSFVec2f", name)) return 12;
15368 1506 : if (!strcmp("inMFVec2f", name)) return 13;
15369 1518 : if (!strcmp("inSFVec3f", name)) return 14;
15370 1478 : if (!strcmp("inMFVec3f", name)) return 15;
15371 1494 : if (!strcmp("outSFBool", name)) return 16;
15372 1470 : if (!strcmp("outSFColor", name)) return 17;
15373 1454 : if (!strcmp("outMFColor", name)) return 18;
15374 1486 : if (!strcmp("outSFFloat", name)) return 19;
15375 1426 : if (!strcmp("outMFFloat", name)) return 20;
15376 1451 : if (!strcmp("outSFInt32", name)) return 21;
15377 1385 : if (!strcmp("outMFInt32", name)) return 22;
15378 1385 : if (!strcmp("outSFRotation", name)) return 23;
15379 1385 : if (!strcmp("outMFRotation", name)) return 24;
15380 1385 : if (!strcmp("outSFString", name)) return 25;
15381 1509 : if (!strcmp("outMFString", name)) return 26;
15382 1265 : if (!strcmp("outSFTime", name)) return 27;
15383 2337 : if (!strcmp("outSFVec2f", name)) return 28;
15384 177 : if (!strcmp("outMFVec2f", name)) return 29;
15385 177 : if (!strcmp("outSFVec3f", name)) return 30;
15386 177 : if (!strcmp("outMFVec3f", name)) return 31;
15387 242 : if (!strcmp("Factor1", name)) return 32;
15388 148 : if (!strcmp("Factor2", name)) return 33;
15389 92 : if (!strcmp("Factor3", name)) return 34;
15390 72 : if (!strcmp("Factor4", name)) return 35;
15391 76 : if (!strcmp("Offset1", name)) return 36;
15392 40 : if (!strcmp("Offset2", name)) return 37;
15393 0 : if (!strcmp("Offset3", name)) return 38;
15394 0 : if (!strcmp("Offset4", name)) return 39;
15395 0 : if (!strcmp("Sum", name)) return 40;
15396 0 : return -1;
15397 2771 : }
15398 : static Bool Valuator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
15399 : {
15400 0 : switch (FieldIndex) {
15401 : case 32:
15402 0 : *AType = 0;
15403 0 : *QType = 0;
15404 0 : *b_min = FIX_MIN;
15405 0 : *b_max = FIX_MAX;
15406 0 : return 1;
15407 : case 33:
15408 0 : *AType = 0;
15409 0 : *QType = 0;
15410 0 : *b_min = FIX_MIN;
15411 0 : *b_max = FIX_MAX;
15412 0 : return 1;
15413 : case 34:
15414 0 : *AType = 0;
15415 0 : *QType = 0;
15416 0 : *b_min = FIX_MIN;
15417 0 : *b_max = FIX_MAX;
15418 0 : return 1;
15419 : case 35:
15420 0 : *AType = 0;
15421 0 : *QType = 0;
15422 0 : *b_min = FIX_MIN;
15423 0 : *b_max = FIX_MAX;
15424 0 : return 1;
15425 : case 36:
15426 0 : *AType = 0;
15427 0 : *QType = 0;
15428 0 : *b_min = FIX_MIN;
15429 0 : *b_max = FIX_MAX;
15430 0 : return 1;
15431 : case 37:
15432 0 : *AType = 0;
15433 0 : *QType = 0;
15434 0 : *b_min = FIX_MIN;
15435 0 : *b_max = FIX_MAX;
15436 0 : return 1;
15437 : case 38:
15438 0 : *AType = 0;
15439 0 : *QType = 0;
15440 0 : *b_min = FIX_MIN;
15441 0 : *b_max = FIX_MAX;
15442 0 : return 1;
15443 : case 39:
15444 0 : *AType = 0;
15445 0 : *QType = 0;
15446 0 : *b_min = FIX_MIN;
15447 0 : *b_max = FIX_MAX;
15448 0 : return 1;
15449 : default:
15450 0 : return 0;
15451 : }
15452 0 : }
15453 :
15454 :
15455 :
15456 : GF_Node *Valuator_Create()
15457 : {
15458 : M_Valuator *p;
15459 19584 : GF_SAFEALLOC(p, M_Valuator);
15460 6528 : if(!p) return NULL;
15461 6528 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Valuator);
15462 :
15463 : /*default field values*/
15464 6528 : p->Factor1 = FLT2FIX(1.0);
15465 6528 : p->Factor2 = FLT2FIX(1.0);
15466 6528 : p->Factor3 = FLT2FIX(1.0);
15467 6528 : p->Factor4 = FLT2FIX(1.0);
15468 6528 : p->Offset1 = FLT2FIX(0.0);
15469 6528 : p->Offset2 = FLT2FIX(0.0);
15470 6528 : p->Offset3 = FLT2FIX(0.0);
15471 6528 : p->Offset4 = FLT2FIX(0.0);
15472 6528 : return (GF_Node *)p;
15473 6528 : }
15474 :
15475 :
15476 : /*
15477 : Viewpoint Node deletion
15478 : */
15479 :
15480 : static void Viewpoint_Del(GF_Node *node)
15481 : {
15482 1190 : M_Viewpoint *p = (M_Viewpoint *) node;
15483 595 : gf_sg_sfstring_del(p->description);
15484 595 : gf_node_free((GF_Node *) p);
15485 595 : }
15486 :
15487 : static const u16 Viewpoint_Def2All[] = { 1, 2, 3, 4, 5};
15488 : static const u16 Viewpoint_In2All[] = { 0, 1, 2, 3, 4};
15489 : static const u16 Viewpoint_Out2All[] = { 1, 2, 3, 4, 6, 7};
15490 : static const u16 Viewpoint_Dyn2All[] = { 1, 3, 4};
15491 :
15492 : static u32 Viewpoint_get_field_count(GF_Node *node, u8 IndexMode)
15493 : {
15494 1202 : switch(IndexMode) {
15495 : case GF_SG_FIELD_CODING_IN:
15496 72 : return 5;
15497 : case GF_SG_FIELD_CODING_DEF:
15498 297 : return 5;
15499 : case GF_SG_FIELD_CODING_OUT:
15500 0 : return 6;
15501 : case GF_SG_FIELD_CODING_DYN:
15502 0 : return 3;
15503 : default:
15504 232 : return 8;
15505 : }
15506 601 : }
15507 :
15508 : static GF_Err Viewpoint_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
15509 : {
15510 1230 : switch(IndexMode) {
15511 : case GF_SG_FIELD_CODING_IN:
15512 70 : *allField = Viewpoint_In2All[inField];
15513 70 : return GF_OK;
15514 : case GF_SG_FIELD_CODING_DEF:
15515 545 : *allField = Viewpoint_Def2All[inField];
15516 545 : return GF_OK;
15517 : case GF_SG_FIELD_CODING_OUT:
15518 0 : *allField = Viewpoint_Out2All[inField];
15519 0 : return GF_OK;
15520 : case GF_SG_FIELD_CODING_DYN:
15521 0 : *allField = Viewpoint_Dyn2All[inField];
15522 0 : return GF_OK;
15523 : default:
15524 0 : return GF_BAD_PARAM;
15525 : }
15526 615 : }
15527 : static GF_Err Viewpoint_get_field(GF_Node *node, GF_FieldInfo *info)
15528 : {
15529 8886 : switch (info->fieldIndex) {
15530 : case 0:
15531 322 : info->name = "set_bind";
15532 322 : info->eventType = GF_SG_EVENT_IN;
15533 322 : info->on_event_in = ((M_Viewpoint *)node)->on_set_bind;
15534 322 : info->fieldType = GF_SG_VRML_SFBOOL;
15535 322 : info->far_ptr = & ((M_Viewpoint *) node)->set_bind;
15536 322 : return GF_OK;
15537 : case 1:
15538 611 : info->name = "fieldOfView";
15539 611 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15540 611 : info->fieldType = GF_SG_VRML_SFFLOAT;
15541 611 : info->far_ptr = & ((M_Viewpoint *) node)->fieldOfView;
15542 611 : return GF_OK;
15543 : case 2:
15544 656 : info->name = "jump";
15545 656 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15546 656 : info->fieldType = GF_SG_VRML_SFBOOL;
15547 656 : info->far_ptr = & ((M_Viewpoint *) node)->jump;
15548 656 : return GF_OK;
15549 : case 3:
15550 694 : info->name = "orientation";
15551 694 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15552 694 : info->fieldType = GF_SG_VRML_SFROTATION;
15553 694 : info->far_ptr = & ((M_Viewpoint *) node)->orientation;
15554 694 : return GF_OK;
15555 : case 4:
15556 905 : info->name = "position";
15557 905 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15558 905 : info->fieldType = GF_SG_VRML_SFVEC3F;
15559 905 : info->far_ptr = & ((M_Viewpoint *) node)->position;
15560 905 : return GF_OK;
15561 : case 5:
15562 791 : info->name = "description";
15563 791 : info->eventType = GF_SG_EVENT_FIELD;
15564 791 : info->fieldType = GF_SG_VRML_SFSTRING;
15565 791 : info->far_ptr = & ((M_Viewpoint *) node)->description;
15566 791 : return GF_OK;
15567 : case 6:
15568 232 : info->name = "bindTime";
15569 232 : info->eventType = GF_SG_EVENT_OUT;
15570 232 : info->fieldType = GF_SG_VRML_SFTIME;
15571 232 : info->far_ptr = & ((M_Viewpoint *) node)->bindTime;
15572 232 : return GF_OK;
15573 : case 7:
15574 232 : info->name = "isBound";
15575 232 : info->eventType = GF_SG_EVENT_OUT;
15576 232 : info->fieldType = GF_SG_VRML_SFBOOL;
15577 232 : info->far_ptr = & ((M_Viewpoint *) node)->isBound;
15578 232 : return GF_OK;
15579 : default:
15580 0 : return GF_BAD_PARAM;
15581 : }
15582 4443 : }
15583 :
15584 :
15585 : static s32 Viewpoint_get_field_index_by_name(char *name)
15586 : {
15587 464 : if (!strcmp("set_bind", name)) return 0;
15588 200 : if (!strcmp("fieldOfView", name)) return 1;
15589 208 : if (!strcmp("jump", name)) return 2;
15590 204 : if (!strcmp("orientation", name)) return 3;
15591 244 : if (!strcmp("position", name)) return 4;
15592 104 : if (!strcmp("description", name)) return 5;
15593 0 : if (!strcmp("bindTime", name)) return 6;
15594 0 : if (!strcmp("isBound", name)) return 7;
15595 0 : return -1;
15596 220 : }
15597 : static Bool Viewpoint_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
15598 : {
15599 0 : switch (FieldIndex) {
15600 : case 1:
15601 0 : *AType = 8;
15602 0 : *QType = 6;
15603 0 : *b_min = FLT2FIX(0);
15604 0 : *b_max = FLT2FIX(3.1415927);
15605 0 : return 1;
15606 : case 3:
15607 0 : *AType = 10;
15608 0 : *QType = 10;
15609 0 : return 1;
15610 : case 4:
15611 0 : *AType = 1;
15612 0 : *QType = 1;
15613 0 : *b_min = FIX_MIN;
15614 0 : *b_max = FIX_MAX;
15615 0 : return 1;
15616 : default:
15617 0 : return 0;
15618 : }
15619 0 : }
15620 :
15621 :
15622 :
15623 : GF_Node *Viewpoint_Create()
15624 : {
15625 : M_Viewpoint *p;
15626 1785 : GF_SAFEALLOC(p, M_Viewpoint);
15627 595 : if(!p) return NULL;
15628 595 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Viewpoint);
15629 :
15630 : /*default field values*/
15631 595 : p->fieldOfView = FLT2FIX(0.785398);
15632 595 : p->jump = 1;
15633 595 : p->orientation.x = FLT2FIX(0);
15634 595 : p->orientation.y = FLT2FIX(0);
15635 595 : p->orientation.z = FLT2FIX(1);
15636 595 : p->orientation.q = FLT2FIX(0);
15637 595 : p->position.x = FLT2FIX(0);
15638 595 : p->position.y = FLT2FIX(0);
15639 595 : p->position.z = FLT2FIX(10);
15640 595 : return (GF_Node *)p;
15641 595 : }
15642 :
15643 :
15644 : /*
15645 : VisibilitySensor Node deletion
15646 : */
15647 :
15648 : static void VisibilitySensor_Del(GF_Node *node)
15649 : {
15650 36 : M_VisibilitySensor *p = (M_VisibilitySensor *) node;
15651 18 : gf_node_free((GF_Node *) p);
15652 18 : }
15653 :
15654 : static const u16 VisibilitySensor_Def2All[] = { 0, 1, 2};
15655 : static const u16 VisibilitySensor_In2All[] = { 0, 1, 2};
15656 : static const u16 VisibilitySensor_Out2All[] = { 0, 1, 2, 3, 4, 5};
15657 : static const u16 VisibilitySensor_Dyn2All[] = { 0, 2};
15658 :
15659 : static u32 VisibilitySensor_get_field_count(GF_Node *node, u8 IndexMode)
15660 : {
15661 68 : switch(IndexMode) {
15662 : case GF_SG_FIELD_CODING_IN:
15663 0 : return 3;
15664 : case GF_SG_FIELD_CODING_DEF:
15665 9 : return 3;
15666 : case GF_SG_FIELD_CODING_OUT:
15667 18 : return 6;
15668 : case GF_SG_FIELD_CODING_DYN:
15669 0 : return 2;
15670 : default:
15671 7 : return 6;
15672 : }
15673 34 : }
15674 :
15675 : static GF_Err VisibilitySensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
15676 : {
15677 78 : switch(IndexMode) {
15678 : case GF_SG_FIELD_CODING_IN:
15679 0 : *allField = VisibilitySensor_In2All[inField];
15680 0 : return GF_OK;
15681 : case GF_SG_FIELD_CODING_DEF:
15682 11 : *allField = VisibilitySensor_Def2All[inField];
15683 11 : return GF_OK;
15684 : case GF_SG_FIELD_CODING_OUT:
15685 28 : *allField = VisibilitySensor_Out2All[inField];
15686 28 : return GF_OK;
15687 : case GF_SG_FIELD_CODING_DYN:
15688 0 : *allField = VisibilitySensor_Dyn2All[inField];
15689 0 : return GF_OK;
15690 : default:
15691 0 : return GF_BAD_PARAM;
15692 : }
15693 39 : }
15694 : static GF_Err VisibilitySensor_get_field(GF_Node *node, GF_FieldInfo *info)
15695 : {
15696 216 : switch (info->fieldIndex) {
15697 : case 0:
15698 20 : info->name = "center";
15699 20 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15700 20 : info->fieldType = GF_SG_VRML_SFVEC3F;
15701 20 : info->far_ptr = & ((M_VisibilitySensor *) node)->center;
15702 20 : return GF_OK;
15703 : case 1:
15704 18 : info->name = "enabled";
15705 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15706 18 : info->fieldType = GF_SG_VRML_SFBOOL;
15707 18 : info->far_ptr = & ((M_VisibilitySensor *) node)->enabled;
15708 18 : return GF_OK;
15709 : case 2:
15710 33 : info->name = "size";
15711 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15712 33 : info->fieldType = GF_SG_VRML_SFVEC3F;
15713 33 : info->far_ptr = & ((M_VisibilitySensor *) node)->size;
15714 33 : return GF_OK;
15715 : case 3:
15716 15 : info->name = "enterTime";
15717 15 : info->eventType = GF_SG_EVENT_OUT;
15718 15 : info->fieldType = GF_SG_VRML_SFTIME;
15719 15 : info->far_ptr = & ((M_VisibilitySensor *) node)->enterTime;
15720 15 : return GF_OK;
15721 : case 4:
15722 15 : info->name = "exitTime";
15723 15 : info->eventType = GF_SG_EVENT_OUT;
15724 15 : info->fieldType = GF_SG_VRML_SFTIME;
15725 15 : info->far_ptr = & ((M_VisibilitySensor *) node)->exitTime;
15726 15 : return GF_OK;
15727 : case 5:
15728 7 : info->name = "isActive";
15729 7 : info->eventType = GF_SG_EVENT_OUT;
15730 7 : info->fieldType = GF_SG_VRML_SFBOOL;
15731 7 : info->far_ptr = & ((M_VisibilitySensor *) node)->isActive;
15732 7 : return GF_OK;
15733 : default:
15734 0 : return GF_BAD_PARAM;
15735 : }
15736 108 : }
15737 :
15738 :
15739 : static s32 VisibilitySensor_get_field_index_by_name(char *name)
15740 : {
15741 30 : if (!strcmp("center", name)) return 0;
15742 12 : if (!strcmp("enabled", name)) return 1;
15743 16 : if (!strcmp("size", name)) return 2;
15744 12 : if (!strcmp("enterTime", name)) return 3;
15745 8 : if (!strcmp("exitTime", name)) return 4;
15746 0 : if (!strcmp("isActive", name)) return 5;
15747 0 : return -1;
15748 14 : }
15749 : static Bool VisibilitySensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
15750 : {
15751 0 : switch (FieldIndex) {
15752 : case 0:
15753 0 : *AType = 1;
15754 0 : *QType = 1;
15755 0 : *b_min = FIX_MIN;
15756 0 : *b_max = FIX_MAX;
15757 0 : return 1;
15758 : case 2:
15759 0 : *AType = 11;
15760 0 : *QType = 11;
15761 0 : *b_min = FLT2FIX(0);
15762 0 : *b_max = FIX_MAX;
15763 0 : return 1;
15764 : default:
15765 0 : return 0;
15766 : }
15767 0 : }
15768 :
15769 :
15770 :
15771 : GF_Node *VisibilitySensor_Create()
15772 : {
15773 : M_VisibilitySensor *p;
15774 54 : GF_SAFEALLOC(p, M_VisibilitySensor);
15775 18 : if(!p) return NULL;
15776 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_VisibilitySensor);
15777 :
15778 : /*default field values*/
15779 18 : p->center.x = FLT2FIX(0);
15780 18 : p->center.y = FLT2FIX(0);
15781 18 : p->center.z = FLT2FIX(0);
15782 18 : p->enabled = 1;
15783 18 : p->size.x = FLT2FIX(0);
15784 18 : p->size.y = FLT2FIX(0);
15785 18 : p->size.z = FLT2FIX(0);
15786 18 : return (GF_Node *)p;
15787 18 : }
15788 :
15789 :
15790 : /*
15791 : Viseme Node deletion
15792 : */
15793 :
15794 : static void Viseme_Del(GF_Node *node)
15795 : {
15796 0 : M_Viseme *p = (M_Viseme *) node;
15797 0 : gf_node_free((GF_Node *) p);
15798 0 : }
15799 :
15800 : static const u16 Viseme_Def2All[] = { 0, 1, 2, 3};
15801 : static const u16 Viseme_In2All[] = { 0, 1, 2, 3};
15802 : static const u16 Viseme_Out2All[] = { 0, 1, 2, 3};
15803 :
15804 : static u32 Viseme_get_field_count(GF_Node *node, u8 IndexMode)
15805 : {
15806 0 : switch(IndexMode) {
15807 : case GF_SG_FIELD_CODING_IN:
15808 0 : return 4;
15809 : case GF_SG_FIELD_CODING_DEF:
15810 0 : return 4;
15811 : case GF_SG_FIELD_CODING_OUT:
15812 0 : return 4;
15813 : case GF_SG_FIELD_CODING_DYN:
15814 0 : return 0;
15815 : default:
15816 0 : return 4;
15817 : }
15818 0 : }
15819 :
15820 : static GF_Err Viseme_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
15821 : {
15822 0 : switch(IndexMode) {
15823 : case GF_SG_FIELD_CODING_IN:
15824 0 : *allField = Viseme_In2All[inField];
15825 0 : return GF_OK;
15826 : case GF_SG_FIELD_CODING_DEF:
15827 0 : *allField = Viseme_Def2All[inField];
15828 0 : return GF_OK;
15829 : case GF_SG_FIELD_CODING_OUT:
15830 0 : *allField = Viseme_Out2All[inField];
15831 0 : return GF_OK;
15832 : default:
15833 0 : return GF_BAD_PARAM;
15834 : }
15835 0 : }
15836 : static GF_Err Viseme_get_field(GF_Node *node, GF_FieldInfo *info)
15837 : {
15838 0 : switch (info->fieldIndex) {
15839 : case 0:
15840 0 : info->name = "viseme_select1";
15841 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15842 0 : info->fieldType = GF_SG_VRML_SFINT32;
15843 0 : info->far_ptr = & ((M_Viseme *) node)->viseme_select1;
15844 0 : return GF_OK;
15845 : case 1:
15846 0 : info->name = "viseme_select2";
15847 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15848 0 : info->fieldType = GF_SG_VRML_SFINT32;
15849 0 : info->far_ptr = & ((M_Viseme *) node)->viseme_select2;
15850 0 : return GF_OK;
15851 : case 2:
15852 0 : info->name = "viseme_blend";
15853 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15854 0 : info->fieldType = GF_SG_VRML_SFINT32;
15855 0 : info->far_ptr = & ((M_Viseme *) node)->viseme_blend;
15856 0 : return GF_OK;
15857 : case 3:
15858 0 : info->name = "viseme_def";
15859 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15860 0 : info->fieldType = GF_SG_VRML_SFBOOL;
15861 0 : info->far_ptr = & ((M_Viseme *) node)->viseme_def;
15862 0 : return GF_OK;
15863 : default:
15864 0 : return GF_BAD_PARAM;
15865 : }
15866 0 : }
15867 :
15868 :
15869 : static s32 Viseme_get_field_index_by_name(char *name)
15870 : {
15871 0 : if (!strcmp("viseme_select1", name)) return 0;
15872 0 : if (!strcmp("viseme_select2", name)) return 1;
15873 0 : if (!strcmp("viseme_blend", name)) return 2;
15874 0 : if (!strcmp("viseme_def", name)) return 3;
15875 0 : return -1;
15876 0 : }
15877 : static Bool Viseme_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
15878 : {
15879 0 : switch (FieldIndex) {
15880 : case 0:
15881 0 : *AType = 0;
15882 0 : *QType = 13;
15883 0 : *QT13_bits = 5;
15884 0 : *b_min = FLT2FIX(0);
15885 0 : *b_max = FLT2FIX(31);
15886 0 : return 1;
15887 : case 1:
15888 0 : *AType = 0;
15889 0 : *QType = 13;
15890 0 : *QT13_bits = 5;
15891 0 : *b_min = FLT2FIX(0);
15892 0 : *b_max = FLT2FIX(31);
15893 0 : return 1;
15894 : case 2:
15895 0 : *AType = 0;
15896 0 : *QType = 13;
15897 0 : *QT13_bits = 6;
15898 0 : *b_min = FLT2FIX(0);
15899 0 : *b_max = FLT2FIX(63);
15900 0 : return 1;
15901 : default:
15902 0 : return 0;
15903 : }
15904 0 : }
15905 :
15906 :
15907 :
15908 : GF_Node *Viseme_Create()
15909 : {
15910 : M_Viseme *p;
15911 0 : GF_SAFEALLOC(p, M_Viseme);
15912 0 : if(!p) return NULL;
15913 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Viseme);
15914 :
15915 : /*default field values*/
15916 0 : p->viseme_select1 = 0;
15917 0 : p->viseme_select2 = 0;
15918 0 : p->viseme_blend = 0;
15919 0 : return (GF_Node *)p;
15920 0 : }
15921 :
15922 :
15923 : /*
15924 : WorldInfo Node deletion
15925 : */
15926 :
15927 : static void WorldInfo_Del(GF_Node *node)
15928 : {
15929 10692 : M_WorldInfo *p = (M_WorldInfo *) node;
15930 5346 : gf_sg_mfstring_del(p->info);
15931 5346 : gf_sg_sfstring_del(p->title);
15932 5346 : gf_node_free((GF_Node *) p);
15933 5346 : }
15934 :
15935 : static const u16 WorldInfo_Def2All[] = { 0, 1};
15936 :
15937 : static u32 WorldInfo_get_field_count(GF_Node *node, u8 IndexMode)
15938 : {
15939 9524 : switch(IndexMode) {
15940 : case GF_SG_FIELD_CODING_IN:
15941 0 : return 0;
15942 : case GF_SG_FIELD_CODING_DEF:
15943 2644 : return 2;
15944 : case GF_SG_FIELD_CODING_OUT:
15945 0 : return 0;
15946 : case GF_SG_FIELD_CODING_DYN:
15947 0 : return 0;
15948 : default:
15949 2118 : return 2;
15950 : }
15951 4762 : }
15952 :
15953 : static GF_Err WorldInfo_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
15954 : {
15955 8196 : switch(IndexMode) {
15956 : case GF_SG_FIELD_CODING_DEF:
15957 4098 : *allField = WorldInfo_Def2All[inField];
15958 4098 : return GF_OK;
15959 : default:
15960 0 : return GF_BAD_PARAM;
15961 : }
15962 4098 : }
15963 : static GF_Err WorldInfo_get_field(GF_Node *node, GF_FieldInfo *info)
15964 : {
15965 39284 : switch (info->fieldIndex) {
15966 : case 0:
15967 9821 : info->name = "info";
15968 9821 : info->eventType = GF_SG_EVENT_FIELD;
15969 9821 : info->fieldType = GF_SG_VRML_MFSTRING;
15970 9821 : info->far_ptr = & ((M_WorldInfo *) node)->info;
15971 9821 : return GF_OK;
15972 : case 1:
15973 9821 : info->name = "title";
15974 9821 : info->eventType = GF_SG_EVENT_FIELD;
15975 9821 : info->fieldType = GF_SG_VRML_SFSTRING;
15976 9821 : info->far_ptr = & ((M_WorldInfo *) node)->title;
15977 9821 : return GF_OK;
15978 : default:
15979 0 : return GF_BAD_PARAM;
15980 : }
15981 19642 : }
15982 :
15983 :
15984 : static s32 WorldInfo_get_field_index_by_name(char *name)
15985 : {
15986 5890 : if (!strcmp("info", name)) return 0;
15987 2356 : if (!strcmp("title", name)) return 1;
15988 0 : return -1;
15989 2356 : }
15990 : static Bool WorldInfo_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
15991 : {
15992 : switch (FieldIndex) {
15993 : default:
15994 0 : return 0;
15995 : }
15996 : }
15997 :
15998 :
15999 :
16000 : GF_Node *WorldInfo_Create()
16001 : {
16002 : M_WorldInfo *p;
16003 16038 : GF_SAFEALLOC(p, M_WorldInfo);
16004 5346 : if(!p) return NULL;
16005 5346 : gf_node_setup((GF_Node *)p, TAG_MPEG4_WorldInfo);
16006 :
16007 : /*default field values*/
16008 5346 : return (GF_Node *)p;
16009 5346 : }
16010 :
16011 :
16012 : /*
16013 : AcousticMaterial Node deletion
16014 : */
16015 :
16016 : static void AcousticMaterial_Del(GF_Node *node)
16017 : {
16018 0 : M_AcousticMaterial *p = (M_AcousticMaterial *) node;
16019 0 : gf_sg_mffloat_del(p->reffunc);
16020 0 : gf_sg_mffloat_del(p->transfunc);
16021 0 : gf_sg_mffloat_del(p->refFrequency);
16022 0 : gf_sg_mffloat_del(p->transFrequency);
16023 0 : gf_node_free((GF_Node *) p);
16024 0 : }
16025 :
16026 : static const u16 AcousticMaterial_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
16027 : static const u16 AcousticMaterial_In2All[] = { 0, 1, 2, 3, 4, 5};
16028 : static const u16 AcousticMaterial_Out2All[] = { 0, 1, 2, 3, 4, 5};
16029 : static const u16 AcousticMaterial_Dyn2All[] = { 0, 1, 2, 3, 4, 5};
16030 :
16031 : static u32 AcousticMaterial_get_field_count(GF_Node *node, u8 IndexMode)
16032 : {
16033 0 : switch(IndexMode) {
16034 : case GF_SG_FIELD_CODING_IN:
16035 0 : return 6;
16036 : case GF_SG_FIELD_CODING_DEF:
16037 0 : return 10;
16038 : case GF_SG_FIELD_CODING_OUT:
16039 0 : return 6;
16040 : case GF_SG_FIELD_CODING_DYN:
16041 0 : return 6;
16042 : default:
16043 0 : return 10;
16044 : }
16045 0 : }
16046 :
16047 : static GF_Err AcousticMaterial_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
16048 : {
16049 0 : switch(IndexMode) {
16050 : case GF_SG_FIELD_CODING_IN:
16051 0 : *allField = AcousticMaterial_In2All[inField];
16052 0 : return GF_OK;
16053 : case GF_SG_FIELD_CODING_DEF:
16054 0 : *allField = AcousticMaterial_Def2All[inField];
16055 0 : return GF_OK;
16056 : case GF_SG_FIELD_CODING_OUT:
16057 0 : *allField = AcousticMaterial_Out2All[inField];
16058 0 : return GF_OK;
16059 : case GF_SG_FIELD_CODING_DYN:
16060 0 : *allField = AcousticMaterial_Dyn2All[inField];
16061 0 : return GF_OK;
16062 : default:
16063 0 : return GF_BAD_PARAM;
16064 : }
16065 0 : }
16066 : static GF_Err AcousticMaterial_get_field(GF_Node *node, GF_FieldInfo *info)
16067 : {
16068 0 : switch (info->fieldIndex) {
16069 : case 0:
16070 0 : info->name = "ambientIntensity";
16071 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16072 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
16073 0 : info->far_ptr = & ((M_AcousticMaterial *) node)->ambientIntensity;
16074 0 : return GF_OK;
16075 : case 1:
16076 0 : info->name = "diffuseColor";
16077 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16078 0 : info->fieldType = GF_SG_VRML_SFCOLOR;
16079 0 : info->far_ptr = & ((M_AcousticMaterial *) node)->diffuseColor;
16080 0 : return GF_OK;
16081 : case 2:
16082 0 : info->name = "emissiveColor";
16083 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16084 0 : info->fieldType = GF_SG_VRML_SFCOLOR;
16085 0 : info->far_ptr = & ((M_AcousticMaterial *) node)->emissiveColor;
16086 0 : return GF_OK;
16087 : case 3:
16088 0 : info->name = "shininess";
16089 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16090 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
16091 0 : info->far_ptr = & ((M_AcousticMaterial *) node)->shininess;
16092 0 : return GF_OK;
16093 : case 4:
16094 0 : info->name = "specularColor";
16095 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16096 0 : info->fieldType = GF_SG_VRML_SFCOLOR;
16097 0 : info->far_ptr = & ((M_AcousticMaterial *) node)->specularColor;
16098 0 : return GF_OK;
16099 : case 5:
16100 0 : info->name = "transparency";
16101 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16102 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
16103 0 : info->far_ptr = & ((M_AcousticMaterial *) node)->transparency;
16104 0 : return GF_OK;
16105 : case 6:
16106 0 : info->name = "reffunc";
16107 0 : info->eventType = GF_SG_EVENT_FIELD;
16108 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
16109 0 : info->far_ptr = & ((M_AcousticMaterial *) node)->reffunc;
16110 0 : return GF_OK;
16111 : case 7:
16112 0 : info->name = "transfunc";
16113 0 : info->eventType = GF_SG_EVENT_FIELD;
16114 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
16115 0 : info->far_ptr = & ((M_AcousticMaterial *) node)->transfunc;
16116 0 : return GF_OK;
16117 : case 8:
16118 0 : info->name = "refFrequency";
16119 0 : info->eventType = GF_SG_EVENT_FIELD;
16120 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
16121 0 : info->far_ptr = & ((M_AcousticMaterial *) node)->refFrequency;
16122 0 : return GF_OK;
16123 : case 9:
16124 0 : info->name = "transFrequency";
16125 0 : info->eventType = GF_SG_EVENT_FIELD;
16126 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
16127 0 : info->far_ptr = & ((M_AcousticMaterial *) node)->transFrequency;
16128 0 : return GF_OK;
16129 : default:
16130 0 : return GF_BAD_PARAM;
16131 : }
16132 0 : }
16133 :
16134 :
16135 : static s32 AcousticMaterial_get_field_index_by_name(char *name)
16136 : {
16137 0 : if (!strcmp("ambientIntensity", name)) return 0;
16138 0 : if (!strcmp("diffuseColor", name)) return 1;
16139 0 : if (!strcmp("emissiveColor", name)) return 2;
16140 0 : if (!strcmp("shininess", name)) return 3;
16141 0 : if (!strcmp("specularColor", name)) return 4;
16142 0 : if (!strcmp("transparency", name)) return 5;
16143 0 : if (!strcmp("reffunc", name)) return 6;
16144 0 : if (!strcmp("transfunc", name)) return 7;
16145 0 : if (!strcmp("refFrequency", name)) return 8;
16146 0 : if (!strcmp("transFrequency", name)) return 9;
16147 0 : return -1;
16148 0 : }
16149 : static Bool AcousticMaterial_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
16150 : {
16151 0 : switch (FieldIndex) {
16152 : case 0:
16153 0 : *AType = 8;
16154 0 : *QType = 4;
16155 0 : *b_min = FLT2FIX(0);
16156 0 : *b_max = FLT2FIX(1);
16157 0 : return 1;
16158 : case 1:
16159 0 : *AType = 8;
16160 0 : *QType = 4;
16161 0 : *b_min = FLT2FIX(0);
16162 0 : *b_max = FLT2FIX(1);
16163 0 : return 1;
16164 : case 2:
16165 0 : *AType = 8;
16166 0 : *QType = 4;
16167 0 : *b_min = FLT2FIX(0);
16168 0 : *b_max = FLT2FIX(1);
16169 0 : return 1;
16170 : case 3:
16171 0 : *AType = 8;
16172 0 : *QType = 4;
16173 0 : *b_min = FLT2FIX(0);
16174 0 : *b_max = FLT2FIX(1);
16175 0 : return 1;
16176 : case 4:
16177 0 : *AType = 8;
16178 0 : *QType = 4;
16179 0 : *b_min = FLT2FIX(0);
16180 0 : *b_max = FLT2FIX(1);
16181 0 : return 1;
16182 : case 5:
16183 0 : *AType = 8;
16184 0 : *QType = 4;
16185 0 : *b_min = FLT2FIX(0);
16186 0 : *b_max = FLT2FIX(1);
16187 0 : return 1;
16188 : case 6:
16189 0 : *AType = 0;
16190 0 : *QType = 0;
16191 0 : *b_min = FIX_MIN;
16192 0 : *b_max = FIX_MAX;
16193 0 : return 1;
16194 : case 7:
16195 0 : *AType = 0;
16196 0 : *QType = 0;
16197 0 : *b_min = FIX_MIN;
16198 0 : *b_max = FIX_MAX;
16199 0 : return 1;
16200 : case 8:
16201 0 : *AType = 0;
16202 0 : *QType = 0;
16203 0 : *b_min = FLT2FIX(0);
16204 0 : *b_max = FIX_MAX;
16205 0 : return 1;
16206 : case 9:
16207 0 : *AType = 0;
16208 0 : *QType = 0;
16209 0 : *b_min = FLT2FIX(0);
16210 0 : *b_max = FIX_MAX;
16211 0 : return 1;
16212 : default:
16213 0 : return 0;
16214 : }
16215 0 : }
16216 :
16217 :
16218 :
16219 : GF_Node *AcousticMaterial_Create()
16220 : {
16221 : M_AcousticMaterial *p;
16222 0 : GF_SAFEALLOC(p, M_AcousticMaterial);
16223 0 : if(!p) return NULL;
16224 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AcousticMaterial);
16225 :
16226 : /*default field values*/
16227 0 : p->ambientIntensity = FLT2FIX(0.2);
16228 0 : p->diffuseColor.red = FLT2FIX(0.8);
16229 0 : p->diffuseColor.green = FLT2FIX(0.8);
16230 0 : p->diffuseColor.blue = FLT2FIX(0.8);
16231 0 : p->emissiveColor.red = FLT2FIX(0);
16232 0 : p->emissiveColor.green = FLT2FIX(0);
16233 0 : p->emissiveColor.blue = FLT2FIX(0);
16234 0 : p->shininess = FLT2FIX(0.2);
16235 0 : p->specularColor.red = FLT2FIX(0);
16236 0 : p->specularColor.green = FLT2FIX(0);
16237 0 : p->specularColor.blue = FLT2FIX(0);
16238 0 : p->transparency = FLT2FIX(0);
16239 0 : p->reffunc.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
16240 0 : p->reffunc.count = 1;
16241 0 : p->reffunc.vals[0] = FLT2FIX(0);
16242 0 : p->transfunc.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
16243 0 : p->transfunc.count = 1;
16244 0 : p->transfunc.vals[0] = FLT2FIX(1);
16245 0 : p->refFrequency.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
16246 0 : p->refFrequency.count = 1;
16247 0 : p->refFrequency.vals[0] = FLT2FIX(0);
16248 0 : p->transFrequency.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
16249 0 : p->transFrequency.count = 1;
16250 0 : p->transFrequency.vals[0] = FLT2FIX(0);
16251 0 : return (GF_Node *)p;
16252 0 : }
16253 :
16254 :
16255 : /*
16256 : AcousticScene Node deletion
16257 : */
16258 :
16259 : static void AcousticScene_Del(GF_Node *node)
16260 : {
16261 0 : M_AcousticScene *p = (M_AcousticScene *) node;
16262 0 : gf_sg_mftime_del(p->reverbTime);
16263 0 : gf_sg_mffloat_del(p->reverbFreq);
16264 0 : gf_node_free((GF_Node *) p);
16265 0 : }
16266 :
16267 : static const u16 AcousticScene_Def2All[] = { 0, 1, 2, 3, 4, 5};
16268 : static const u16 AcousticScene_In2All[] = { 4, 5};
16269 : static const u16 AcousticScene_Out2All[] = { 4, 5};
16270 : static const u16 AcousticScene_Dyn2All[] = { 4};
16271 :
16272 : static u32 AcousticScene_get_field_count(GF_Node *node, u8 IndexMode)
16273 : {
16274 0 : switch(IndexMode) {
16275 : case GF_SG_FIELD_CODING_IN:
16276 0 : return 2;
16277 : case GF_SG_FIELD_CODING_DEF:
16278 0 : return 6;
16279 : case GF_SG_FIELD_CODING_OUT:
16280 0 : return 2;
16281 : case GF_SG_FIELD_CODING_DYN:
16282 0 : return 1;
16283 : default:
16284 0 : return 6;
16285 : }
16286 0 : }
16287 :
16288 : static GF_Err AcousticScene_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
16289 : {
16290 0 : switch(IndexMode) {
16291 : case GF_SG_FIELD_CODING_IN:
16292 0 : *allField = AcousticScene_In2All[inField];
16293 0 : return GF_OK;
16294 : case GF_SG_FIELD_CODING_DEF:
16295 0 : *allField = AcousticScene_Def2All[inField];
16296 0 : return GF_OK;
16297 : case GF_SG_FIELD_CODING_OUT:
16298 0 : *allField = AcousticScene_Out2All[inField];
16299 0 : return GF_OK;
16300 : case GF_SG_FIELD_CODING_DYN:
16301 0 : *allField = AcousticScene_Dyn2All[inField];
16302 0 : return GF_OK;
16303 : default:
16304 0 : return GF_BAD_PARAM;
16305 : }
16306 0 : }
16307 : static GF_Err AcousticScene_get_field(GF_Node *node, GF_FieldInfo *info)
16308 : {
16309 0 : switch (info->fieldIndex) {
16310 : case 0:
16311 0 : info->name = "center";
16312 0 : info->eventType = GF_SG_EVENT_FIELD;
16313 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
16314 0 : info->far_ptr = & ((M_AcousticScene *) node)->center;
16315 0 : return GF_OK;
16316 : case 1:
16317 0 : info->name = "Size";
16318 0 : info->eventType = GF_SG_EVENT_FIELD;
16319 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
16320 0 : info->far_ptr = & ((M_AcousticScene *) node)->Size;
16321 0 : return GF_OK;
16322 : case 2:
16323 0 : info->name = "reverbTime";
16324 0 : info->eventType = GF_SG_EVENT_FIELD;
16325 0 : info->fieldType = GF_SG_VRML_MFTIME;
16326 0 : info->far_ptr = & ((M_AcousticScene *) node)->reverbTime;
16327 0 : return GF_OK;
16328 : case 3:
16329 0 : info->name = "reverbFreq";
16330 0 : info->eventType = GF_SG_EVENT_FIELD;
16331 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
16332 0 : info->far_ptr = & ((M_AcousticScene *) node)->reverbFreq;
16333 0 : return GF_OK;
16334 : case 4:
16335 0 : info->name = "reverbLevel";
16336 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16337 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
16338 0 : info->far_ptr = & ((M_AcousticScene *) node)->reverbLevel;
16339 0 : return GF_OK;
16340 : case 5:
16341 0 : info->name = "reverbDelay";
16342 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16343 0 : info->fieldType = GF_SG_VRML_SFTIME;
16344 0 : info->far_ptr = & ((M_AcousticScene *) node)->reverbDelay;
16345 0 : return GF_OK;
16346 : default:
16347 0 : return GF_BAD_PARAM;
16348 : }
16349 0 : }
16350 :
16351 :
16352 : static s32 AcousticScene_get_field_index_by_name(char *name)
16353 : {
16354 0 : if (!strcmp("center", name)) return 0;
16355 0 : if (!strcmp("Size", name)) return 1;
16356 0 : if (!strcmp("reverbTime", name)) return 2;
16357 0 : if (!strcmp("reverbFreq", name)) return 3;
16358 0 : if (!strcmp("reverbLevel", name)) return 4;
16359 0 : if (!strcmp("reverbDelay", name)) return 5;
16360 0 : return -1;
16361 0 : }
16362 : static Bool AcousticScene_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
16363 : {
16364 0 : switch (FieldIndex) {
16365 : case 0:
16366 0 : *AType = 0;
16367 0 : *QType = 1;
16368 0 : *b_min = FIX_MIN;
16369 0 : *b_max = FIX_MAX;
16370 0 : return 1;
16371 : case 1:
16372 0 : *AType = 0;
16373 0 : *QType = 11;
16374 0 : *b_min = FIX_MIN;
16375 0 : *b_max = FIX_MAX;
16376 0 : return 1;
16377 : case 2:
16378 0 : *AType = 0;
16379 0 : *QType = 0;
16380 0 : *b_min = FLT2FIX(0 );
16381 0 : *b_max = FIX_MAX;
16382 0 : return 1;
16383 : case 3:
16384 0 : *AType = 0;
16385 0 : *QType = 0;
16386 0 : *b_min = FLT2FIX(0 );
16387 0 : *b_max = FIX_MAX;
16388 0 : return 1;
16389 : case 4:
16390 0 : *AType = 7;
16391 0 : *QType = 0;
16392 0 : *b_min = FLT2FIX(0 );
16393 0 : *b_max = FIX_MAX;
16394 0 : return 1;
16395 : case 5:
16396 0 : *AType = 0;
16397 0 : *QType = 0;
16398 0 : *b_min = FLT2FIX(0 );
16399 0 : *b_max = FIX_MAX;
16400 0 : return 1;
16401 : default:
16402 0 : return 0;
16403 : }
16404 0 : }
16405 :
16406 :
16407 :
16408 : GF_Node *AcousticScene_Create()
16409 : {
16410 : M_AcousticScene *p;
16411 0 : GF_SAFEALLOC(p, M_AcousticScene);
16412 0 : if(!p) return NULL;
16413 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AcousticScene);
16414 :
16415 : /*default field values*/
16416 0 : p->center.x = FLT2FIX(0);
16417 0 : p->center.y = FLT2FIX(0);
16418 0 : p->center.z = FLT2FIX(0);
16419 0 : p->Size.x = FLT2FIX(-1);
16420 0 : p->Size.y = FLT2FIX(-1);
16421 0 : p->Size.z = FLT2FIX(-1);
16422 0 : p->reverbTime.vals = (SFTime*)gf_malloc(sizeof(SFTime)*1);
16423 0 : p->reverbTime.count = 1;
16424 0 : p->reverbTime.vals[0] = 0;
16425 0 : p->reverbFreq.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
16426 0 : p->reverbFreq.count = 1;
16427 0 : p->reverbFreq.vals[0] = FLT2FIX(1000);
16428 0 : p->reverbLevel = FLT2FIX(0.4);
16429 0 : p->reverbDelay = 0.5;
16430 0 : return (GF_Node *)p;
16431 0 : }
16432 :
16433 :
16434 : /*
16435 : ApplicationWindow Node deletion
16436 : */
16437 :
16438 : static void ApplicationWindow_Del(GF_Node *node)
16439 : {
16440 0 : M_ApplicationWindow *p = (M_ApplicationWindow *) node;
16441 0 : gf_sg_sfstring_del(p->description);
16442 0 : gf_sg_mfstring_del(p->parameter);
16443 0 : gf_sg_mfurl_del(p->url);
16444 0 : gf_node_free((GF_Node *) p);
16445 0 : }
16446 :
16447 : static const u16 ApplicationWindow_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
16448 : static const u16 ApplicationWindow_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
16449 : static const u16 ApplicationWindow_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
16450 : static const u16 ApplicationWindow_Dyn2All[] = { 6};
16451 :
16452 : static u32 ApplicationWindow_get_field_count(GF_Node *node, u8 IndexMode)
16453 : {
16454 0 : switch(IndexMode) {
16455 : case GF_SG_FIELD_CODING_IN:
16456 0 : return 7;
16457 : case GF_SG_FIELD_CODING_DEF:
16458 0 : return 7;
16459 : case GF_SG_FIELD_CODING_OUT:
16460 0 : return 7;
16461 : case GF_SG_FIELD_CODING_DYN:
16462 0 : return 1;
16463 : default:
16464 0 : return 7;
16465 : }
16466 0 : }
16467 :
16468 : static GF_Err ApplicationWindow_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
16469 : {
16470 0 : switch(IndexMode) {
16471 : case GF_SG_FIELD_CODING_IN:
16472 0 : *allField = ApplicationWindow_In2All[inField];
16473 0 : return GF_OK;
16474 : case GF_SG_FIELD_CODING_DEF:
16475 0 : *allField = ApplicationWindow_Def2All[inField];
16476 0 : return GF_OK;
16477 : case GF_SG_FIELD_CODING_OUT:
16478 0 : *allField = ApplicationWindow_Out2All[inField];
16479 0 : return GF_OK;
16480 : case GF_SG_FIELD_CODING_DYN:
16481 0 : *allField = ApplicationWindow_Dyn2All[inField];
16482 0 : return GF_OK;
16483 : default:
16484 0 : return GF_BAD_PARAM;
16485 : }
16486 0 : }
16487 : static GF_Err ApplicationWindow_get_field(GF_Node *node, GF_FieldInfo *info)
16488 : {
16489 0 : switch (info->fieldIndex) {
16490 : case 0:
16491 0 : info->name = "isActive";
16492 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16493 0 : info->fieldType = GF_SG_VRML_SFBOOL;
16494 0 : info->far_ptr = & ((M_ApplicationWindow *) node)->isActive;
16495 0 : return GF_OK;
16496 : case 1:
16497 0 : info->name = "startTime";
16498 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16499 0 : info->fieldType = GF_SG_VRML_SFTIME;
16500 0 : info->far_ptr = & ((M_ApplicationWindow *) node)->startTime;
16501 0 : return GF_OK;
16502 : case 2:
16503 0 : info->name = "stopTime";
16504 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16505 0 : info->fieldType = GF_SG_VRML_SFTIME;
16506 0 : info->far_ptr = & ((M_ApplicationWindow *) node)->stopTime;
16507 0 : return GF_OK;
16508 : case 3:
16509 0 : info->name = "description";
16510 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16511 0 : info->fieldType = GF_SG_VRML_SFSTRING;
16512 0 : info->far_ptr = & ((M_ApplicationWindow *) node)->description;
16513 0 : return GF_OK;
16514 : case 4:
16515 0 : info->name = "parameter";
16516 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16517 0 : info->fieldType = GF_SG_VRML_MFSTRING;
16518 0 : info->far_ptr = & ((M_ApplicationWindow *) node)->parameter;
16519 0 : return GF_OK;
16520 : case 5:
16521 0 : info->name = "url";
16522 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16523 0 : info->fieldType = GF_SG_VRML_MFURL;
16524 0 : info->far_ptr = & ((M_ApplicationWindow *) node)->url;
16525 0 : return GF_OK;
16526 : case 6:
16527 0 : info->name = "size";
16528 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16529 0 : info->fieldType = GF_SG_VRML_SFVEC2F;
16530 0 : info->far_ptr = & ((M_ApplicationWindow *) node)->size;
16531 0 : return GF_OK;
16532 : default:
16533 0 : return GF_BAD_PARAM;
16534 : }
16535 0 : }
16536 :
16537 :
16538 : static s32 ApplicationWindow_get_field_index_by_name(char *name)
16539 : {
16540 0 : if (!strcmp("isActive", name)) return 0;
16541 0 : if (!strcmp("startTime", name)) return 1;
16542 0 : if (!strcmp("stopTime", name)) return 2;
16543 0 : if (!strcmp("description", name)) return 3;
16544 0 : if (!strcmp("parameter", name)) return 4;
16545 0 : if (!strcmp("url", name)) return 5;
16546 0 : if (!strcmp("size", name)) return 6;
16547 0 : return -1;
16548 0 : }
16549 : static Bool ApplicationWindow_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
16550 : {
16551 0 : switch (FieldIndex) {
16552 : case 1:
16553 0 : *AType = 0;
16554 0 : *QType = 0;
16555 0 : *b_min = FIX_MIN;
16556 0 : *b_max = FIX_MAX;
16557 0 : return 1;
16558 : case 2:
16559 0 : *AType = 0;
16560 0 : *QType = 0;
16561 0 : *b_min = FIX_MIN;
16562 0 : *b_max = FIX_MAX;
16563 0 : return 1;
16564 : case 6:
16565 0 : *AType = 12;
16566 0 : *QType = 12;
16567 0 : *b_min = FIX_MIN;
16568 0 : *b_max = FIX_MAX;
16569 0 : return 1;
16570 : default:
16571 0 : return 0;
16572 : }
16573 0 : }
16574 :
16575 :
16576 :
16577 : GF_Node *ApplicationWindow_Create()
16578 : {
16579 : M_ApplicationWindow *p;
16580 0 : GF_SAFEALLOC(p, M_ApplicationWindow);
16581 0 : if(!p) return NULL;
16582 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ApplicationWindow);
16583 :
16584 : /*default field values*/
16585 0 : p->startTime = 0;
16586 0 : p->stopTime = 0;
16587 0 : p->size.x = FLT2FIX(0);
16588 0 : p->size.y = FLT2FIX(0);
16589 0 : return (GF_Node *)p;
16590 0 : }
16591 :
16592 :
16593 : /*
16594 : BAP Node deletion
16595 : */
16596 :
16597 : static void BAP_Del(GF_Node *node)
16598 : {
16599 0 : M_BAP *p = (M_BAP *) node;
16600 0 : gf_node_free((GF_Node *) p);
16601 0 : }
16602 :
16603 : static const u16 BAP_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295};
16604 : static const u16 BAP_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295};
16605 : static const u16 BAP_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295};
16606 :
16607 : static u32 BAP_get_field_count(GF_Node *node, u8 IndexMode)
16608 : {
16609 0 : switch(IndexMode) {
16610 : case GF_SG_FIELD_CODING_IN:
16611 0 : return 296;
16612 : case GF_SG_FIELD_CODING_DEF:
16613 0 : return 296;
16614 : case GF_SG_FIELD_CODING_OUT:
16615 0 : return 296;
16616 : case GF_SG_FIELD_CODING_DYN:
16617 0 : return 0;
16618 : default:
16619 0 : return 296;
16620 : }
16621 0 : }
16622 :
16623 : static GF_Err BAP_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
16624 : {
16625 0 : switch(IndexMode) {
16626 : case GF_SG_FIELD_CODING_IN:
16627 0 : *allField = BAP_In2All[inField];
16628 0 : return GF_OK;
16629 : case GF_SG_FIELD_CODING_DEF:
16630 0 : *allField = BAP_Def2All[inField];
16631 0 : return GF_OK;
16632 : case GF_SG_FIELD_CODING_OUT:
16633 0 : *allField = BAP_Out2All[inField];
16634 0 : return GF_OK;
16635 : default:
16636 0 : return GF_BAD_PARAM;
16637 : }
16638 0 : }
16639 : static GF_Err BAP_get_field(GF_Node *node, GF_FieldInfo *info)
16640 : {
16641 0 : switch (info->fieldIndex) {
16642 : case 0:
16643 0 : info->name = "sacroiliac_tilt";
16644 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16645 0 : info->fieldType = GF_SG_VRML_SFINT32;
16646 0 : info->far_ptr = & ((M_BAP *) node)->sacroiliac_tilt;
16647 0 : return GF_OK;
16648 : case 1:
16649 0 : info->name = "sacroiliac_torsion";
16650 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16651 0 : info->fieldType = GF_SG_VRML_SFINT32;
16652 0 : info->far_ptr = & ((M_BAP *) node)->sacroiliac_torsion;
16653 0 : return GF_OK;
16654 : case 2:
16655 0 : info->name = "sacroiliac_roll";
16656 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16657 0 : info->fieldType = GF_SG_VRML_SFINT32;
16658 0 : info->far_ptr = & ((M_BAP *) node)->sacroiliac_roll;
16659 0 : return GF_OK;
16660 : case 3:
16661 0 : info->name = "l_hip_flexion";
16662 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16663 0 : info->fieldType = GF_SG_VRML_SFINT32;
16664 0 : info->far_ptr = & ((M_BAP *) node)->l_hip_flexion;
16665 0 : return GF_OK;
16666 : case 4:
16667 0 : info->name = "r_hip_flexion";
16668 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16669 0 : info->fieldType = GF_SG_VRML_SFINT32;
16670 0 : info->far_ptr = & ((M_BAP *) node)->r_hip_flexion;
16671 0 : return GF_OK;
16672 : case 5:
16673 0 : info->name = "l_hip_abduct";
16674 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16675 0 : info->fieldType = GF_SG_VRML_SFINT32;
16676 0 : info->far_ptr = & ((M_BAP *) node)->l_hip_abduct;
16677 0 : return GF_OK;
16678 : case 6:
16679 0 : info->name = "r_hip_abduct";
16680 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16681 0 : info->fieldType = GF_SG_VRML_SFINT32;
16682 0 : info->far_ptr = & ((M_BAP *) node)->r_hip_abduct;
16683 0 : return GF_OK;
16684 : case 7:
16685 0 : info->name = "l_hip_twisting";
16686 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16687 0 : info->fieldType = GF_SG_VRML_SFINT32;
16688 0 : info->far_ptr = & ((M_BAP *) node)->l_hip_twisting;
16689 0 : return GF_OK;
16690 : case 8:
16691 0 : info->name = "r_hip_twisting";
16692 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16693 0 : info->fieldType = GF_SG_VRML_SFINT32;
16694 0 : info->far_ptr = & ((M_BAP *) node)->r_hip_twisting;
16695 0 : return GF_OK;
16696 : case 9:
16697 0 : info->name = "l_knee_flexion";
16698 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16699 0 : info->fieldType = GF_SG_VRML_SFINT32;
16700 0 : info->far_ptr = & ((M_BAP *) node)->l_knee_flexion;
16701 0 : return GF_OK;
16702 : case 10:
16703 0 : info->name = "r_knee_flexion";
16704 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16705 0 : info->fieldType = GF_SG_VRML_SFINT32;
16706 0 : info->far_ptr = & ((M_BAP *) node)->r_knee_flexion;
16707 0 : return GF_OK;
16708 : case 11:
16709 0 : info->name = "l_knee_twisting";
16710 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16711 0 : info->fieldType = GF_SG_VRML_SFINT32;
16712 0 : info->far_ptr = & ((M_BAP *) node)->l_knee_twisting;
16713 0 : return GF_OK;
16714 : case 12:
16715 0 : info->name = "r_knee_twisting";
16716 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16717 0 : info->fieldType = GF_SG_VRML_SFINT32;
16718 0 : info->far_ptr = & ((M_BAP *) node)->r_knee_twisting;
16719 0 : return GF_OK;
16720 : case 13:
16721 0 : info->name = "l_ankle_flexion";
16722 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16723 0 : info->fieldType = GF_SG_VRML_SFINT32;
16724 0 : info->far_ptr = & ((M_BAP *) node)->l_ankle_flexion;
16725 0 : return GF_OK;
16726 : case 14:
16727 0 : info->name = "r_ankle_flexion";
16728 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16729 0 : info->fieldType = GF_SG_VRML_SFINT32;
16730 0 : info->far_ptr = & ((M_BAP *) node)->r_ankle_flexion;
16731 0 : return GF_OK;
16732 : case 15:
16733 0 : info->name = "l_ankle_twisting";
16734 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16735 0 : info->fieldType = GF_SG_VRML_SFINT32;
16736 0 : info->far_ptr = & ((M_BAP *) node)->l_ankle_twisting;
16737 0 : return GF_OK;
16738 : case 16:
16739 0 : info->name = "r_ankle_twisting";
16740 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16741 0 : info->fieldType = GF_SG_VRML_SFINT32;
16742 0 : info->far_ptr = & ((M_BAP *) node)->r_ankle_twisting;
16743 0 : return GF_OK;
16744 : case 17:
16745 0 : info->name = "l_subtalar_flexion";
16746 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16747 0 : info->fieldType = GF_SG_VRML_SFINT32;
16748 0 : info->far_ptr = & ((M_BAP *) node)->l_subtalar_flexion;
16749 0 : return GF_OK;
16750 : case 18:
16751 0 : info->name = "r_subtalar_flexion";
16752 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16753 0 : info->fieldType = GF_SG_VRML_SFINT32;
16754 0 : info->far_ptr = & ((M_BAP *) node)->r_subtalar_flexion;
16755 0 : return GF_OK;
16756 : case 19:
16757 0 : info->name = "l_midtarsal_flexion";
16758 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16759 0 : info->fieldType = GF_SG_VRML_SFINT32;
16760 0 : info->far_ptr = & ((M_BAP *) node)->l_midtarsal_flexion;
16761 0 : return GF_OK;
16762 : case 20:
16763 0 : info->name = "r_midtarsal_flexion";
16764 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16765 0 : info->fieldType = GF_SG_VRML_SFINT32;
16766 0 : info->far_ptr = & ((M_BAP *) node)->r_midtarsal_flexion;
16767 0 : return GF_OK;
16768 : case 21:
16769 0 : info->name = "l_metatarsal_flexion";
16770 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16771 0 : info->fieldType = GF_SG_VRML_SFINT32;
16772 0 : info->far_ptr = & ((M_BAP *) node)->l_metatarsal_flexion;
16773 0 : return GF_OK;
16774 : case 22:
16775 0 : info->name = "r_metatarsal_flexion";
16776 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16777 0 : info->fieldType = GF_SG_VRML_SFINT32;
16778 0 : info->far_ptr = & ((M_BAP *) node)->r_metatarsal_flexion;
16779 0 : return GF_OK;
16780 : case 23:
16781 0 : info->name = "l_sternoclavicular_abduct";
16782 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16783 0 : info->fieldType = GF_SG_VRML_SFINT32;
16784 0 : info->far_ptr = & ((M_BAP *) node)->l_sternoclavicular_abduct;
16785 0 : return GF_OK;
16786 : case 24:
16787 0 : info->name = "r_sternoclavicular_abduct";
16788 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16789 0 : info->fieldType = GF_SG_VRML_SFINT32;
16790 0 : info->far_ptr = & ((M_BAP *) node)->r_sternoclavicular_abduct;
16791 0 : return GF_OK;
16792 : case 25:
16793 0 : info->name = "l_sternoclavicular_rotate";
16794 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16795 0 : info->fieldType = GF_SG_VRML_SFINT32;
16796 0 : info->far_ptr = & ((M_BAP *) node)->l_sternoclavicular_rotate;
16797 0 : return GF_OK;
16798 : case 26:
16799 0 : info->name = "r_sternoclavicular_rotate";
16800 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16801 0 : info->fieldType = GF_SG_VRML_SFINT32;
16802 0 : info->far_ptr = & ((M_BAP *) node)->r_sternoclavicular_rotate;
16803 0 : return GF_OK;
16804 : case 27:
16805 0 : info->name = "l_acromioclavicular_abduct";
16806 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16807 0 : info->fieldType = GF_SG_VRML_SFINT32;
16808 0 : info->far_ptr = & ((M_BAP *) node)->l_acromioclavicular_abduct;
16809 0 : return GF_OK;
16810 : case 28:
16811 0 : info->name = "r_acromioclavicular_abduct";
16812 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16813 0 : info->fieldType = GF_SG_VRML_SFINT32;
16814 0 : info->far_ptr = & ((M_BAP *) node)->r_acromioclavicular_abduct;
16815 0 : return GF_OK;
16816 : case 29:
16817 0 : info->name = "l_acromioclavicular_rotate";
16818 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16819 0 : info->fieldType = GF_SG_VRML_SFINT32;
16820 0 : info->far_ptr = & ((M_BAP *) node)->l_acromioclavicular_rotate;
16821 0 : return GF_OK;
16822 : case 30:
16823 0 : info->name = "r_acromioclavicular_rotate";
16824 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16825 0 : info->fieldType = GF_SG_VRML_SFINT32;
16826 0 : info->far_ptr = & ((M_BAP *) node)->r_acromioclavicular_rotate;
16827 0 : return GF_OK;
16828 : case 31:
16829 0 : info->name = "l_shoulder_flexion";
16830 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16831 0 : info->fieldType = GF_SG_VRML_SFINT32;
16832 0 : info->far_ptr = & ((M_BAP *) node)->l_shoulder_flexion;
16833 0 : return GF_OK;
16834 : case 32:
16835 0 : info->name = "r_shoulder_flexion";
16836 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16837 0 : info->fieldType = GF_SG_VRML_SFINT32;
16838 0 : info->far_ptr = & ((M_BAP *) node)->r_shoulder_flexion;
16839 0 : return GF_OK;
16840 : case 33:
16841 0 : info->name = "l_shoulder_abduct";
16842 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16843 0 : info->fieldType = GF_SG_VRML_SFINT32;
16844 0 : info->far_ptr = & ((M_BAP *) node)->l_shoulder_abduct;
16845 0 : return GF_OK;
16846 : case 34:
16847 0 : info->name = "r_shoulder_abduct";
16848 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16849 0 : info->fieldType = GF_SG_VRML_SFINT32;
16850 0 : info->far_ptr = & ((M_BAP *) node)->r_shoulder_abduct;
16851 0 : return GF_OK;
16852 : case 35:
16853 0 : info->name = "l_shoulder_twisting";
16854 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16855 0 : info->fieldType = GF_SG_VRML_SFINT32;
16856 0 : info->far_ptr = & ((M_BAP *) node)->l_shoulder_twisting;
16857 0 : return GF_OK;
16858 : case 36:
16859 0 : info->name = "r_shoulder_twisting";
16860 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16861 0 : info->fieldType = GF_SG_VRML_SFINT32;
16862 0 : info->far_ptr = & ((M_BAP *) node)->r_shoulder_twisting;
16863 0 : return GF_OK;
16864 : case 37:
16865 0 : info->name = "l_elbow_flexion";
16866 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16867 0 : info->fieldType = GF_SG_VRML_SFINT32;
16868 0 : info->far_ptr = & ((M_BAP *) node)->l_elbow_flexion;
16869 0 : return GF_OK;
16870 : case 38:
16871 0 : info->name = "r_elbow_flexion";
16872 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16873 0 : info->fieldType = GF_SG_VRML_SFINT32;
16874 0 : info->far_ptr = & ((M_BAP *) node)->r_elbow_flexion;
16875 0 : return GF_OK;
16876 : case 39:
16877 0 : info->name = "l_elbow_twisting";
16878 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16879 0 : info->fieldType = GF_SG_VRML_SFINT32;
16880 0 : info->far_ptr = & ((M_BAP *) node)->l_elbow_twisting;
16881 0 : return GF_OK;
16882 : case 40:
16883 0 : info->name = "r_elbow_twisting";
16884 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16885 0 : info->fieldType = GF_SG_VRML_SFINT32;
16886 0 : info->far_ptr = & ((M_BAP *) node)->r_elbow_twisting;
16887 0 : return GF_OK;
16888 : case 41:
16889 0 : info->name = "l_wrist_flexion";
16890 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16891 0 : info->fieldType = GF_SG_VRML_SFINT32;
16892 0 : info->far_ptr = & ((M_BAP *) node)->l_wrist_flexion;
16893 0 : return GF_OK;
16894 : case 42:
16895 0 : info->name = "r_wrist_flexion";
16896 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16897 0 : info->fieldType = GF_SG_VRML_SFINT32;
16898 0 : info->far_ptr = & ((M_BAP *) node)->r_wrist_flexion;
16899 0 : return GF_OK;
16900 : case 43:
16901 0 : info->name = "l_wrist_pivot";
16902 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16903 0 : info->fieldType = GF_SG_VRML_SFINT32;
16904 0 : info->far_ptr = & ((M_BAP *) node)->l_wrist_pivot;
16905 0 : return GF_OK;
16906 : case 44:
16907 0 : info->name = "r_wrist_pivot";
16908 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16909 0 : info->fieldType = GF_SG_VRML_SFINT32;
16910 0 : info->far_ptr = & ((M_BAP *) node)->r_wrist_pivot;
16911 0 : return GF_OK;
16912 : case 45:
16913 0 : info->name = "l_wrist_twisting";
16914 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16915 0 : info->fieldType = GF_SG_VRML_SFINT32;
16916 0 : info->far_ptr = & ((M_BAP *) node)->l_wrist_twisting;
16917 0 : return GF_OK;
16918 : case 46:
16919 0 : info->name = "r_wrist_twisting";
16920 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16921 0 : info->fieldType = GF_SG_VRML_SFINT32;
16922 0 : info->far_ptr = & ((M_BAP *) node)->r_wrist_twisting;
16923 0 : return GF_OK;
16924 : case 47:
16925 0 : info->name = "skullbase_roll";
16926 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16927 0 : info->fieldType = GF_SG_VRML_SFINT32;
16928 0 : info->far_ptr = & ((M_BAP *) node)->skullbase_roll;
16929 0 : return GF_OK;
16930 : case 48:
16931 0 : info->name = "skullbase_torsion";
16932 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16933 0 : info->fieldType = GF_SG_VRML_SFINT32;
16934 0 : info->far_ptr = & ((M_BAP *) node)->skullbase_torsion;
16935 0 : return GF_OK;
16936 : case 49:
16937 0 : info->name = "skullbase_tilt";
16938 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16939 0 : info->fieldType = GF_SG_VRML_SFINT32;
16940 0 : info->far_ptr = & ((M_BAP *) node)->skullbase_tilt;
16941 0 : return GF_OK;
16942 : case 50:
16943 0 : info->name = "vc1roll";
16944 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16945 0 : info->fieldType = GF_SG_VRML_SFINT32;
16946 0 : info->far_ptr = & ((M_BAP *) node)->vc1roll;
16947 0 : return GF_OK;
16948 : case 51:
16949 0 : info->name = "vc1torsion";
16950 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16951 0 : info->fieldType = GF_SG_VRML_SFINT32;
16952 0 : info->far_ptr = & ((M_BAP *) node)->vc1torsion;
16953 0 : return GF_OK;
16954 : case 52:
16955 0 : info->name = "vc1tilt";
16956 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16957 0 : info->fieldType = GF_SG_VRML_SFINT32;
16958 0 : info->far_ptr = & ((M_BAP *) node)->vc1tilt;
16959 0 : return GF_OK;
16960 : case 53:
16961 0 : info->name = "vc2roll";
16962 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16963 0 : info->fieldType = GF_SG_VRML_SFINT32;
16964 0 : info->far_ptr = & ((M_BAP *) node)->vc2roll;
16965 0 : return GF_OK;
16966 : case 54:
16967 0 : info->name = "vc2torsion";
16968 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16969 0 : info->fieldType = GF_SG_VRML_SFINT32;
16970 0 : info->far_ptr = & ((M_BAP *) node)->vc2torsion;
16971 0 : return GF_OK;
16972 : case 55:
16973 0 : info->name = "vc2tilt";
16974 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16975 0 : info->fieldType = GF_SG_VRML_SFINT32;
16976 0 : info->far_ptr = & ((M_BAP *) node)->vc2tilt;
16977 0 : return GF_OK;
16978 : case 56:
16979 0 : info->name = "vc3roll";
16980 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16981 0 : info->fieldType = GF_SG_VRML_SFINT32;
16982 0 : info->far_ptr = & ((M_BAP *) node)->vc3roll;
16983 0 : return GF_OK;
16984 : case 57:
16985 0 : info->name = "vc3torsion";
16986 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16987 0 : info->fieldType = GF_SG_VRML_SFINT32;
16988 0 : info->far_ptr = & ((M_BAP *) node)->vc3torsion;
16989 0 : return GF_OK;
16990 : case 58:
16991 0 : info->name = "vc3tilt";
16992 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16993 0 : info->fieldType = GF_SG_VRML_SFINT32;
16994 0 : info->far_ptr = & ((M_BAP *) node)->vc3tilt;
16995 0 : return GF_OK;
16996 : case 59:
16997 0 : info->name = "vc4roll";
16998 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16999 0 : info->fieldType = GF_SG_VRML_SFINT32;
17000 0 : info->far_ptr = & ((M_BAP *) node)->vc4roll;
17001 0 : return GF_OK;
17002 : case 60:
17003 0 : info->name = "vc4torsion";
17004 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17005 0 : info->fieldType = GF_SG_VRML_SFINT32;
17006 0 : info->far_ptr = & ((M_BAP *) node)->vc4torsion;
17007 0 : return GF_OK;
17008 : case 61:
17009 0 : info->name = "vc4tilt";
17010 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17011 0 : info->fieldType = GF_SG_VRML_SFINT32;
17012 0 : info->far_ptr = & ((M_BAP *) node)->vc4tilt;
17013 0 : return GF_OK;
17014 : case 62:
17015 0 : info->name = "vc5roll";
17016 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17017 0 : info->fieldType = GF_SG_VRML_SFINT32;
17018 0 : info->far_ptr = & ((M_BAP *) node)->vc5roll;
17019 0 : return GF_OK;
17020 : case 63:
17021 0 : info->name = "vc5torsion";
17022 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17023 0 : info->fieldType = GF_SG_VRML_SFINT32;
17024 0 : info->far_ptr = & ((M_BAP *) node)->vc5torsion;
17025 0 : return GF_OK;
17026 : case 64:
17027 0 : info->name = "vc5tilt";
17028 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17029 0 : info->fieldType = GF_SG_VRML_SFINT32;
17030 0 : info->far_ptr = & ((M_BAP *) node)->vc5tilt;
17031 0 : return GF_OK;
17032 : case 65:
17033 0 : info->name = "vc6roll";
17034 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17035 0 : info->fieldType = GF_SG_VRML_SFINT32;
17036 0 : info->far_ptr = & ((M_BAP *) node)->vc6roll;
17037 0 : return GF_OK;
17038 : case 66:
17039 0 : info->name = "vc6torsion";
17040 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17041 0 : info->fieldType = GF_SG_VRML_SFINT32;
17042 0 : info->far_ptr = & ((M_BAP *) node)->vc6torsion;
17043 0 : return GF_OK;
17044 : case 67:
17045 0 : info->name = "vc6tilt";
17046 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17047 0 : info->fieldType = GF_SG_VRML_SFINT32;
17048 0 : info->far_ptr = & ((M_BAP *) node)->vc6tilt;
17049 0 : return GF_OK;
17050 : case 68:
17051 0 : info->name = "vc7roll";
17052 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17053 0 : info->fieldType = GF_SG_VRML_SFINT32;
17054 0 : info->far_ptr = & ((M_BAP *) node)->vc7roll;
17055 0 : return GF_OK;
17056 : case 69:
17057 0 : info->name = "vc7torsion";
17058 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17059 0 : info->fieldType = GF_SG_VRML_SFINT32;
17060 0 : info->far_ptr = & ((M_BAP *) node)->vc7torsion;
17061 0 : return GF_OK;
17062 : case 70:
17063 0 : info->name = "vc7tilt";
17064 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17065 0 : info->fieldType = GF_SG_VRML_SFINT32;
17066 0 : info->far_ptr = & ((M_BAP *) node)->vc7tilt;
17067 0 : return GF_OK;
17068 : case 71:
17069 0 : info->name = "vt1roll";
17070 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17071 0 : info->fieldType = GF_SG_VRML_SFINT32;
17072 0 : info->far_ptr = & ((M_BAP *) node)->vt1roll;
17073 0 : return GF_OK;
17074 : case 72:
17075 0 : info->name = "vt1torsion";
17076 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17077 0 : info->fieldType = GF_SG_VRML_SFINT32;
17078 0 : info->far_ptr = & ((M_BAP *) node)->vt1torsion;
17079 0 : return GF_OK;
17080 : case 73:
17081 0 : info->name = "vt1tilt";
17082 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17083 0 : info->fieldType = GF_SG_VRML_SFINT32;
17084 0 : info->far_ptr = & ((M_BAP *) node)->vt1tilt;
17085 0 : return GF_OK;
17086 : case 74:
17087 0 : info->name = "vt2roll";
17088 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17089 0 : info->fieldType = GF_SG_VRML_SFINT32;
17090 0 : info->far_ptr = & ((M_BAP *) node)->vt2roll;
17091 0 : return GF_OK;
17092 : case 75:
17093 0 : info->name = "vt2torsion";
17094 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17095 0 : info->fieldType = GF_SG_VRML_SFINT32;
17096 0 : info->far_ptr = & ((M_BAP *) node)->vt2torsion;
17097 0 : return GF_OK;
17098 : case 76:
17099 0 : info->name = "vt2tilt";
17100 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17101 0 : info->fieldType = GF_SG_VRML_SFINT32;
17102 0 : info->far_ptr = & ((M_BAP *) node)->vt2tilt;
17103 0 : return GF_OK;
17104 : case 77:
17105 0 : info->name = "vt3roll";
17106 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17107 0 : info->fieldType = GF_SG_VRML_SFINT32;
17108 0 : info->far_ptr = & ((M_BAP *) node)->vt3roll;
17109 0 : return GF_OK;
17110 : case 78:
17111 0 : info->name = "vt3torsion";
17112 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17113 0 : info->fieldType = GF_SG_VRML_SFINT32;
17114 0 : info->far_ptr = & ((M_BAP *) node)->vt3torsion;
17115 0 : return GF_OK;
17116 : case 79:
17117 0 : info->name = "vt3tilt";
17118 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17119 0 : info->fieldType = GF_SG_VRML_SFINT32;
17120 0 : info->far_ptr = & ((M_BAP *) node)->vt3tilt;
17121 0 : return GF_OK;
17122 : case 80:
17123 0 : info->name = "vt4roll";
17124 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17125 0 : info->fieldType = GF_SG_VRML_SFINT32;
17126 0 : info->far_ptr = & ((M_BAP *) node)->vt4roll;
17127 0 : return GF_OK;
17128 : case 81:
17129 0 : info->name = "vt4torsion";
17130 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17131 0 : info->fieldType = GF_SG_VRML_SFINT32;
17132 0 : info->far_ptr = & ((M_BAP *) node)->vt4torsion;
17133 0 : return GF_OK;
17134 : case 82:
17135 0 : info->name = "vt4tilt";
17136 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17137 0 : info->fieldType = GF_SG_VRML_SFINT32;
17138 0 : info->far_ptr = & ((M_BAP *) node)->vt4tilt;
17139 0 : return GF_OK;
17140 : case 83:
17141 0 : info->name = "vt5roll";
17142 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17143 0 : info->fieldType = GF_SG_VRML_SFINT32;
17144 0 : info->far_ptr = & ((M_BAP *) node)->vt5roll;
17145 0 : return GF_OK;
17146 : case 84:
17147 0 : info->name = "vt5torsion";
17148 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17149 0 : info->fieldType = GF_SG_VRML_SFINT32;
17150 0 : info->far_ptr = & ((M_BAP *) node)->vt5torsion;
17151 0 : return GF_OK;
17152 : case 85:
17153 0 : info->name = "vt5tilt";
17154 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17155 0 : info->fieldType = GF_SG_VRML_SFINT32;
17156 0 : info->far_ptr = & ((M_BAP *) node)->vt5tilt;
17157 0 : return GF_OK;
17158 : case 86:
17159 0 : info->name = "vt6roll";
17160 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17161 0 : info->fieldType = GF_SG_VRML_SFINT32;
17162 0 : info->far_ptr = & ((M_BAP *) node)->vt6roll;
17163 0 : return GF_OK;
17164 : case 87:
17165 0 : info->name = "vt6torsion";
17166 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17167 0 : info->fieldType = GF_SG_VRML_SFINT32;
17168 0 : info->far_ptr = & ((M_BAP *) node)->vt6torsion;
17169 0 : return GF_OK;
17170 : case 88:
17171 0 : info->name = "vt6tilt";
17172 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17173 0 : info->fieldType = GF_SG_VRML_SFINT32;
17174 0 : info->far_ptr = & ((M_BAP *) node)->vt6tilt;
17175 0 : return GF_OK;
17176 : case 89:
17177 0 : info->name = "vt7roll";
17178 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17179 0 : info->fieldType = GF_SG_VRML_SFINT32;
17180 0 : info->far_ptr = & ((M_BAP *) node)->vt7roll;
17181 0 : return GF_OK;
17182 : case 90:
17183 0 : info->name = "vt7torsion";
17184 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17185 0 : info->fieldType = GF_SG_VRML_SFINT32;
17186 0 : info->far_ptr = & ((M_BAP *) node)->vt7torsion;
17187 0 : return GF_OK;
17188 : case 91:
17189 0 : info->name = "vt7tilt";
17190 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17191 0 : info->fieldType = GF_SG_VRML_SFINT32;
17192 0 : info->far_ptr = & ((M_BAP *) node)->vt7tilt;
17193 0 : return GF_OK;
17194 : case 92:
17195 0 : info->name = "vt8roll";
17196 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17197 0 : info->fieldType = GF_SG_VRML_SFINT32;
17198 0 : info->far_ptr = & ((M_BAP *) node)->vt8roll;
17199 0 : return GF_OK;
17200 : case 93:
17201 0 : info->name = "vt8torsion";
17202 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17203 0 : info->fieldType = GF_SG_VRML_SFINT32;
17204 0 : info->far_ptr = & ((M_BAP *) node)->vt8torsion;
17205 0 : return GF_OK;
17206 : case 94:
17207 0 : info->name = "vt8tilt";
17208 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17209 0 : info->fieldType = GF_SG_VRML_SFINT32;
17210 0 : info->far_ptr = & ((M_BAP *) node)->vt8tilt;
17211 0 : return GF_OK;
17212 : case 95:
17213 0 : info->name = "vt9roll";
17214 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17215 0 : info->fieldType = GF_SG_VRML_SFINT32;
17216 0 : info->far_ptr = & ((M_BAP *) node)->vt9roll;
17217 0 : return GF_OK;
17218 : case 96:
17219 0 : info->name = "vt9torsion";
17220 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17221 0 : info->fieldType = GF_SG_VRML_SFINT32;
17222 0 : info->far_ptr = & ((M_BAP *) node)->vt9torsion;
17223 0 : return GF_OK;
17224 : case 97:
17225 0 : info->name = "vt9tilt";
17226 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17227 0 : info->fieldType = GF_SG_VRML_SFINT32;
17228 0 : info->far_ptr = & ((M_BAP *) node)->vt9tilt;
17229 0 : return GF_OK;
17230 : case 98:
17231 0 : info->name = "vt10roll";
17232 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17233 0 : info->fieldType = GF_SG_VRML_SFINT32;
17234 0 : info->far_ptr = & ((M_BAP *) node)->vt10roll;
17235 0 : return GF_OK;
17236 : case 99:
17237 0 : info->name = "vt10torsion";
17238 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17239 0 : info->fieldType = GF_SG_VRML_SFINT32;
17240 0 : info->far_ptr = & ((M_BAP *) node)->vt10torsion;
17241 0 : return GF_OK;
17242 : case 100:
17243 0 : info->name = "vt10tilt";
17244 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17245 0 : info->fieldType = GF_SG_VRML_SFINT32;
17246 0 : info->far_ptr = & ((M_BAP *) node)->vt10tilt;
17247 0 : return GF_OK;
17248 : case 101:
17249 0 : info->name = "vt11roll";
17250 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17251 0 : info->fieldType = GF_SG_VRML_SFINT32;
17252 0 : info->far_ptr = & ((M_BAP *) node)->vt11roll;
17253 0 : return GF_OK;
17254 : case 102:
17255 0 : info->name = "vt11torsion";
17256 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17257 0 : info->fieldType = GF_SG_VRML_SFINT32;
17258 0 : info->far_ptr = & ((M_BAP *) node)->vt11torsion;
17259 0 : return GF_OK;
17260 : case 103:
17261 0 : info->name = "vt11tilt";
17262 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17263 0 : info->fieldType = GF_SG_VRML_SFINT32;
17264 0 : info->far_ptr = & ((M_BAP *) node)->vt11tilt;
17265 0 : return GF_OK;
17266 : case 104:
17267 0 : info->name = "vt12roll";
17268 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17269 0 : info->fieldType = GF_SG_VRML_SFINT32;
17270 0 : info->far_ptr = & ((M_BAP *) node)->vt12roll;
17271 0 : return GF_OK;
17272 : case 105:
17273 0 : info->name = "vt12torsion";
17274 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17275 0 : info->fieldType = GF_SG_VRML_SFINT32;
17276 0 : info->far_ptr = & ((M_BAP *) node)->vt12torsion;
17277 0 : return GF_OK;
17278 : case 106:
17279 0 : info->name = "vt12tilt";
17280 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17281 0 : info->fieldType = GF_SG_VRML_SFINT32;
17282 0 : info->far_ptr = & ((M_BAP *) node)->vt12tilt;
17283 0 : return GF_OK;
17284 : case 107:
17285 0 : info->name = "vl1roll";
17286 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17287 0 : info->fieldType = GF_SG_VRML_SFINT32;
17288 0 : info->far_ptr = & ((M_BAP *) node)->vl1roll;
17289 0 : return GF_OK;
17290 : case 108:
17291 0 : info->name = "vl1torsion";
17292 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17293 0 : info->fieldType = GF_SG_VRML_SFINT32;
17294 0 : info->far_ptr = & ((M_BAP *) node)->vl1torsion;
17295 0 : return GF_OK;
17296 : case 109:
17297 0 : info->name = "vl1tilt";
17298 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17299 0 : info->fieldType = GF_SG_VRML_SFINT32;
17300 0 : info->far_ptr = & ((M_BAP *) node)->vl1tilt;
17301 0 : return GF_OK;
17302 : case 110:
17303 0 : info->name = "vl2roll";
17304 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17305 0 : info->fieldType = GF_SG_VRML_SFINT32;
17306 0 : info->far_ptr = & ((M_BAP *) node)->vl2roll;
17307 0 : return GF_OK;
17308 : case 111:
17309 0 : info->name = "vl2torsion";
17310 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17311 0 : info->fieldType = GF_SG_VRML_SFINT32;
17312 0 : info->far_ptr = & ((M_BAP *) node)->vl2torsion;
17313 0 : return GF_OK;
17314 : case 112:
17315 0 : info->name = "vl2tilt";
17316 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17317 0 : info->fieldType = GF_SG_VRML_SFINT32;
17318 0 : info->far_ptr = & ((M_BAP *) node)->vl2tilt;
17319 0 : return GF_OK;
17320 : case 113:
17321 0 : info->name = "vl3roll";
17322 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17323 0 : info->fieldType = GF_SG_VRML_SFINT32;
17324 0 : info->far_ptr = & ((M_BAP *) node)->vl3roll;
17325 0 : return GF_OK;
17326 : case 114:
17327 0 : info->name = "vl3torsion";
17328 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17329 0 : info->fieldType = GF_SG_VRML_SFINT32;
17330 0 : info->far_ptr = & ((M_BAP *) node)->vl3torsion;
17331 0 : return GF_OK;
17332 : case 115:
17333 0 : info->name = "vl3tilt";
17334 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17335 0 : info->fieldType = GF_SG_VRML_SFINT32;
17336 0 : info->far_ptr = & ((M_BAP *) node)->vl3tilt;
17337 0 : return GF_OK;
17338 : case 116:
17339 0 : info->name = "vl4roll";
17340 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17341 0 : info->fieldType = GF_SG_VRML_SFINT32;
17342 0 : info->far_ptr = & ((M_BAP *) node)->vl4roll;
17343 0 : return GF_OK;
17344 : case 117:
17345 0 : info->name = "vl4torsion";
17346 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17347 0 : info->fieldType = GF_SG_VRML_SFINT32;
17348 0 : info->far_ptr = & ((M_BAP *) node)->vl4torsion;
17349 0 : return GF_OK;
17350 : case 118:
17351 0 : info->name = "vl4tilt";
17352 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17353 0 : info->fieldType = GF_SG_VRML_SFINT32;
17354 0 : info->far_ptr = & ((M_BAP *) node)->vl4tilt;
17355 0 : return GF_OK;
17356 : case 119:
17357 0 : info->name = "vl5roll";
17358 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17359 0 : info->fieldType = GF_SG_VRML_SFINT32;
17360 0 : info->far_ptr = & ((M_BAP *) node)->vl5roll;
17361 0 : return GF_OK;
17362 : case 120:
17363 0 : info->name = "vl5torsion";
17364 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17365 0 : info->fieldType = GF_SG_VRML_SFINT32;
17366 0 : info->far_ptr = & ((M_BAP *) node)->vl5torsion;
17367 0 : return GF_OK;
17368 : case 121:
17369 0 : info->name = "vl5tilt";
17370 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17371 0 : info->fieldType = GF_SG_VRML_SFINT32;
17372 0 : info->far_ptr = & ((M_BAP *) node)->vl5tilt;
17373 0 : return GF_OK;
17374 : case 122:
17375 0 : info->name = "l_pinky0_flexion";
17376 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17377 0 : info->fieldType = GF_SG_VRML_SFINT32;
17378 0 : info->far_ptr = & ((M_BAP *) node)->l_pinky0_flexion;
17379 0 : return GF_OK;
17380 : case 123:
17381 0 : info->name = "r_pinky0_flexion";
17382 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17383 0 : info->fieldType = GF_SG_VRML_SFINT32;
17384 0 : info->far_ptr = & ((M_BAP *) node)->r_pinky0_flexion;
17385 0 : return GF_OK;
17386 : case 124:
17387 0 : info->name = "l_pinky1_flexion";
17388 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17389 0 : info->fieldType = GF_SG_VRML_SFINT32;
17390 0 : info->far_ptr = & ((M_BAP *) node)->l_pinky1_flexion;
17391 0 : return GF_OK;
17392 : case 125:
17393 0 : info->name = "r_pinky1_flexion";
17394 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17395 0 : info->fieldType = GF_SG_VRML_SFINT32;
17396 0 : info->far_ptr = & ((M_BAP *) node)->r_pinky1_flexion;
17397 0 : return GF_OK;
17398 : case 126:
17399 0 : info->name = "l_pinky1_pivot";
17400 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17401 0 : info->fieldType = GF_SG_VRML_SFINT32;
17402 0 : info->far_ptr = & ((M_BAP *) node)->l_pinky1_pivot;
17403 0 : return GF_OK;
17404 : case 127:
17405 0 : info->name = "r_pinky1_pivot";
17406 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17407 0 : info->fieldType = GF_SG_VRML_SFINT32;
17408 0 : info->far_ptr = & ((M_BAP *) node)->r_pinky1_pivot;
17409 0 : return GF_OK;
17410 : case 128:
17411 0 : info->name = "l_pinky1_twisting";
17412 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17413 0 : info->fieldType = GF_SG_VRML_SFINT32;
17414 0 : info->far_ptr = & ((M_BAP *) node)->l_pinky1_twisting;
17415 0 : return GF_OK;
17416 : case 129:
17417 0 : info->name = "r_pinky1_twisting";
17418 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17419 0 : info->fieldType = GF_SG_VRML_SFINT32;
17420 0 : info->far_ptr = & ((M_BAP *) node)->r_pinky1_twisting;
17421 0 : return GF_OK;
17422 : case 130:
17423 0 : info->name = "l_pinky2_flexion";
17424 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17425 0 : info->fieldType = GF_SG_VRML_SFINT32;
17426 0 : info->far_ptr = & ((M_BAP *) node)->l_pinky2_flexion;
17427 0 : return GF_OK;
17428 : case 131:
17429 0 : info->name = "r_pinky2_flexion";
17430 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17431 0 : info->fieldType = GF_SG_VRML_SFINT32;
17432 0 : info->far_ptr = & ((M_BAP *) node)->r_pinky2_flexion;
17433 0 : return GF_OK;
17434 : case 132:
17435 0 : info->name = "l_pinky3_flexion";
17436 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17437 0 : info->fieldType = GF_SG_VRML_SFINT32;
17438 0 : info->far_ptr = & ((M_BAP *) node)->l_pinky3_flexion;
17439 0 : return GF_OK;
17440 : case 133:
17441 0 : info->name = "r_pinky3_flexion";
17442 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17443 0 : info->fieldType = GF_SG_VRML_SFINT32;
17444 0 : info->far_ptr = & ((M_BAP *) node)->r_pinky3_flexion;
17445 0 : return GF_OK;
17446 : case 134:
17447 0 : info->name = "l_ring0_flexion";
17448 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17449 0 : info->fieldType = GF_SG_VRML_SFINT32;
17450 0 : info->far_ptr = & ((M_BAP *) node)->l_ring0_flexion;
17451 0 : return GF_OK;
17452 : case 135:
17453 0 : info->name = "r_ring0_flexion";
17454 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17455 0 : info->fieldType = GF_SG_VRML_SFINT32;
17456 0 : info->far_ptr = & ((M_BAP *) node)->r_ring0_flexion;
17457 0 : return GF_OK;
17458 : case 136:
17459 0 : info->name = "l_ring1_flexion";
17460 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17461 0 : info->fieldType = GF_SG_VRML_SFINT32;
17462 0 : info->far_ptr = & ((M_BAP *) node)->l_ring1_flexion;
17463 0 : return GF_OK;
17464 : case 137:
17465 0 : info->name = "r_ring1_flexion";
17466 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17467 0 : info->fieldType = GF_SG_VRML_SFINT32;
17468 0 : info->far_ptr = & ((M_BAP *) node)->r_ring1_flexion;
17469 0 : return GF_OK;
17470 : case 138:
17471 0 : info->name = "l_ring1_pivot";
17472 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17473 0 : info->fieldType = GF_SG_VRML_SFINT32;
17474 0 : info->far_ptr = & ((M_BAP *) node)->l_ring1_pivot;
17475 0 : return GF_OK;
17476 : case 139:
17477 0 : info->name = "r_ring1_pivot";
17478 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17479 0 : info->fieldType = GF_SG_VRML_SFINT32;
17480 0 : info->far_ptr = & ((M_BAP *) node)->r_ring1_pivot;
17481 0 : return GF_OK;
17482 : case 140:
17483 0 : info->name = "l_ring1_twisting";
17484 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17485 0 : info->fieldType = GF_SG_VRML_SFINT32;
17486 0 : info->far_ptr = & ((M_BAP *) node)->l_ring1_twisting;
17487 0 : return GF_OK;
17488 : case 141:
17489 0 : info->name = "r_ring1_twisting";
17490 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17491 0 : info->fieldType = GF_SG_VRML_SFINT32;
17492 0 : info->far_ptr = & ((M_BAP *) node)->r_ring1_twisting;
17493 0 : return GF_OK;
17494 : case 142:
17495 0 : info->name = "l_ring2_flexion";
17496 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17497 0 : info->fieldType = GF_SG_VRML_SFINT32;
17498 0 : info->far_ptr = & ((M_BAP *) node)->l_ring2_flexion;
17499 0 : return GF_OK;
17500 : case 143:
17501 0 : info->name = "r_ring2_flexion";
17502 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17503 0 : info->fieldType = GF_SG_VRML_SFINT32;
17504 0 : info->far_ptr = & ((M_BAP *) node)->r_ring2_flexion;
17505 0 : return GF_OK;
17506 : case 144:
17507 0 : info->name = "l_ring3_flexion";
17508 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17509 0 : info->fieldType = GF_SG_VRML_SFINT32;
17510 0 : info->far_ptr = & ((M_BAP *) node)->l_ring3_flexion;
17511 0 : return GF_OK;
17512 : case 145:
17513 0 : info->name = "r_ring3_flexion";
17514 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17515 0 : info->fieldType = GF_SG_VRML_SFINT32;
17516 0 : info->far_ptr = & ((M_BAP *) node)->r_ring3_flexion;
17517 0 : return GF_OK;
17518 : case 146:
17519 0 : info->name = "l_middle0_flexion";
17520 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17521 0 : info->fieldType = GF_SG_VRML_SFINT32;
17522 0 : info->far_ptr = & ((M_BAP *) node)->l_middle0_flexion;
17523 0 : return GF_OK;
17524 : case 147:
17525 0 : info->name = "r_middle0_flexion";
17526 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17527 0 : info->fieldType = GF_SG_VRML_SFINT32;
17528 0 : info->far_ptr = & ((M_BAP *) node)->r_middle0_flexion;
17529 0 : return GF_OK;
17530 : case 148:
17531 0 : info->name = "l_middle1_flexion";
17532 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17533 0 : info->fieldType = GF_SG_VRML_SFINT32;
17534 0 : info->far_ptr = & ((M_BAP *) node)->l_middle1_flexion;
17535 0 : return GF_OK;
17536 : case 149:
17537 0 : info->name = "r_middle1_flexion";
17538 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17539 0 : info->fieldType = GF_SG_VRML_SFINT32;
17540 0 : info->far_ptr = & ((M_BAP *) node)->r_middle1_flexion;
17541 0 : return GF_OK;
17542 : case 150:
17543 0 : info->name = "l_middle1_pivot";
17544 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17545 0 : info->fieldType = GF_SG_VRML_SFINT32;
17546 0 : info->far_ptr = & ((M_BAP *) node)->l_middle1_pivot;
17547 0 : return GF_OK;
17548 : case 151:
17549 0 : info->name = "r_middle1_pivot";
17550 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17551 0 : info->fieldType = GF_SG_VRML_SFINT32;
17552 0 : info->far_ptr = & ((M_BAP *) node)->r_middle1_pivot;
17553 0 : return GF_OK;
17554 : case 152:
17555 0 : info->name = "l_middle1_twisting";
17556 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17557 0 : info->fieldType = GF_SG_VRML_SFINT32;
17558 0 : info->far_ptr = & ((M_BAP *) node)->l_middle1_twisting;
17559 0 : return GF_OK;
17560 : case 153:
17561 0 : info->name = "r_middle1_twisting";
17562 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17563 0 : info->fieldType = GF_SG_VRML_SFINT32;
17564 0 : info->far_ptr = & ((M_BAP *) node)->r_middle1_twisting;
17565 0 : return GF_OK;
17566 : case 154:
17567 0 : info->name = "l_middle2_flexion";
17568 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17569 0 : info->fieldType = GF_SG_VRML_SFINT32;
17570 0 : info->far_ptr = & ((M_BAP *) node)->l_middle2_flexion;
17571 0 : return GF_OK;
17572 : case 155:
17573 0 : info->name = "r_middle2_flexion";
17574 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17575 0 : info->fieldType = GF_SG_VRML_SFINT32;
17576 0 : info->far_ptr = & ((M_BAP *) node)->r_middle2_flexion;
17577 0 : return GF_OK;
17578 : case 156:
17579 0 : info->name = "l_middle3_flexion";
17580 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17581 0 : info->fieldType = GF_SG_VRML_SFINT32;
17582 0 : info->far_ptr = & ((M_BAP *) node)->l_middle3_flexion;
17583 0 : return GF_OK;
17584 : case 157:
17585 0 : info->name = "r_middle3_flexion";
17586 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17587 0 : info->fieldType = GF_SG_VRML_SFINT32;
17588 0 : info->far_ptr = & ((M_BAP *) node)->r_middle3_flexion;
17589 0 : return GF_OK;
17590 : case 158:
17591 0 : info->name = "l_index0_flexion";
17592 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17593 0 : info->fieldType = GF_SG_VRML_SFINT32;
17594 0 : info->far_ptr = & ((M_BAP *) node)->l_index0_flexion;
17595 0 : return GF_OK;
17596 : case 159:
17597 0 : info->name = "r_index0_flexion";
17598 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17599 0 : info->fieldType = GF_SG_VRML_SFINT32;
17600 0 : info->far_ptr = & ((M_BAP *) node)->r_index0_flexion;
17601 0 : return GF_OK;
17602 : case 160:
17603 0 : info->name = "l_index1_flexion";
17604 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17605 0 : info->fieldType = GF_SG_VRML_SFINT32;
17606 0 : info->far_ptr = & ((M_BAP *) node)->l_index1_flexion;
17607 0 : return GF_OK;
17608 : case 161:
17609 0 : info->name = "r_index1_flexion";
17610 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17611 0 : info->fieldType = GF_SG_VRML_SFINT32;
17612 0 : info->far_ptr = & ((M_BAP *) node)->r_index1_flexion;
17613 0 : return GF_OK;
17614 : case 162:
17615 0 : info->name = "l_index1_pivot";
17616 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17617 0 : info->fieldType = GF_SG_VRML_SFINT32;
17618 0 : info->far_ptr = & ((M_BAP *) node)->l_index1_pivot;
17619 0 : return GF_OK;
17620 : case 163:
17621 0 : info->name = "r_index1_pivot";
17622 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17623 0 : info->fieldType = GF_SG_VRML_SFINT32;
17624 0 : info->far_ptr = & ((M_BAP *) node)->r_index1_pivot;
17625 0 : return GF_OK;
17626 : case 164:
17627 0 : info->name = "l_index1_twisting";
17628 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17629 0 : info->fieldType = GF_SG_VRML_SFINT32;
17630 0 : info->far_ptr = & ((M_BAP *) node)->l_index1_twisting;
17631 0 : return GF_OK;
17632 : case 165:
17633 0 : info->name = "r_index1_twisting";
17634 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17635 0 : info->fieldType = GF_SG_VRML_SFINT32;
17636 0 : info->far_ptr = & ((M_BAP *) node)->r_index1_twisting;
17637 0 : return GF_OK;
17638 : case 166:
17639 0 : info->name = "l_index2_flexion";
17640 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17641 0 : info->fieldType = GF_SG_VRML_SFINT32;
17642 0 : info->far_ptr = & ((M_BAP *) node)->l_index2_flexion;
17643 0 : return GF_OK;
17644 : case 167:
17645 0 : info->name = "r_index2_flexion";
17646 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17647 0 : info->fieldType = GF_SG_VRML_SFINT32;
17648 0 : info->far_ptr = & ((M_BAP *) node)->r_index2_flexion;
17649 0 : return GF_OK;
17650 : case 168:
17651 0 : info->name = "l_index3_flexion";
17652 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17653 0 : info->fieldType = GF_SG_VRML_SFINT32;
17654 0 : info->far_ptr = & ((M_BAP *) node)->l_index3_flexion;
17655 0 : return GF_OK;
17656 : case 169:
17657 0 : info->name = "r_index3_flexion";
17658 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17659 0 : info->fieldType = GF_SG_VRML_SFINT32;
17660 0 : info->far_ptr = & ((M_BAP *) node)->r_index3_flexion;
17661 0 : return GF_OK;
17662 : case 170:
17663 0 : info->name = "l_thumb1_flexion";
17664 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17665 0 : info->fieldType = GF_SG_VRML_SFINT32;
17666 0 : info->far_ptr = & ((M_BAP *) node)->l_thumb1_flexion;
17667 0 : return GF_OK;
17668 : case 171:
17669 0 : info->name = "r_thumb1_flexion";
17670 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17671 0 : info->fieldType = GF_SG_VRML_SFINT32;
17672 0 : info->far_ptr = & ((M_BAP *) node)->r_thumb1_flexion;
17673 0 : return GF_OK;
17674 : case 172:
17675 0 : info->name = "l_thumb1_pivot";
17676 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17677 0 : info->fieldType = GF_SG_VRML_SFINT32;
17678 0 : info->far_ptr = & ((M_BAP *) node)->l_thumb1_pivot;
17679 0 : return GF_OK;
17680 : case 173:
17681 0 : info->name = "r_thumb1_pivot";
17682 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17683 0 : info->fieldType = GF_SG_VRML_SFINT32;
17684 0 : info->far_ptr = & ((M_BAP *) node)->r_thumb1_pivot;
17685 0 : return GF_OK;
17686 : case 174:
17687 0 : info->name = "l_thumb1_twisting";
17688 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17689 0 : info->fieldType = GF_SG_VRML_SFINT32;
17690 0 : info->far_ptr = & ((M_BAP *) node)->l_thumb1_twisting;
17691 0 : return GF_OK;
17692 : case 175:
17693 0 : info->name = "r_thumb1_twisting";
17694 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17695 0 : info->fieldType = GF_SG_VRML_SFINT32;
17696 0 : info->far_ptr = & ((M_BAP *) node)->r_thumb1_twisting;
17697 0 : return GF_OK;
17698 : case 176:
17699 0 : info->name = "l_thumb2_flexion";
17700 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17701 0 : info->fieldType = GF_SG_VRML_SFINT32;
17702 0 : info->far_ptr = & ((M_BAP *) node)->l_thumb2_flexion;
17703 0 : return GF_OK;
17704 : case 177:
17705 0 : info->name = "r_thumb2_flexion";
17706 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17707 0 : info->fieldType = GF_SG_VRML_SFINT32;
17708 0 : info->far_ptr = & ((M_BAP *) node)->r_thumb2_flexion;
17709 0 : return GF_OK;
17710 : case 178:
17711 0 : info->name = "l_thumb3_flexion";
17712 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17713 0 : info->fieldType = GF_SG_VRML_SFINT32;
17714 0 : info->far_ptr = & ((M_BAP *) node)->l_thumb3_flexion;
17715 0 : return GF_OK;
17716 : case 179:
17717 0 : info->name = "r_thumb3_flexion";
17718 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17719 0 : info->fieldType = GF_SG_VRML_SFINT32;
17720 0 : info->far_ptr = & ((M_BAP *) node)->r_thumb3_flexion;
17721 0 : return GF_OK;
17722 : case 180:
17723 0 : info->name = "HumanoidRoot_tr_vertical";
17724 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17725 0 : info->fieldType = GF_SG_VRML_SFINT32;
17726 0 : info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_tr_vertical;
17727 0 : return GF_OK;
17728 : case 181:
17729 0 : info->name = "HumanoidRoot_tr_lateral";
17730 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17731 0 : info->fieldType = GF_SG_VRML_SFINT32;
17732 0 : info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_tr_lateral;
17733 0 : return GF_OK;
17734 : case 182:
17735 0 : info->name = "HumanoidRoot_tr_frontal";
17736 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17737 0 : info->fieldType = GF_SG_VRML_SFINT32;
17738 0 : info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_tr_frontal;
17739 0 : return GF_OK;
17740 : case 183:
17741 0 : info->name = "HumanoidRoot_rt_body_turn";
17742 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17743 0 : info->fieldType = GF_SG_VRML_SFINT32;
17744 0 : info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_rt_body_turn;
17745 0 : return GF_OK;
17746 : case 184:
17747 0 : info->name = "HumanoidRoot_rt_body_roll";
17748 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17749 0 : info->fieldType = GF_SG_VRML_SFINT32;
17750 0 : info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_rt_body_roll;
17751 0 : return GF_OK;
17752 : case 185:
17753 0 : info->name = "HumanoidRoot_rt_body_tilt";
17754 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17755 0 : info->fieldType = GF_SG_VRML_SFINT32;
17756 0 : info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_rt_body_tilt;
17757 0 : return GF_OK;
17758 : case 186:
17759 0 : info->name = "extensionBap187";
17760 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17761 0 : info->fieldType = GF_SG_VRML_SFINT32;
17762 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap187;
17763 0 : return GF_OK;
17764 : case 187:
17765 0 : info->name = "extensionBap188";
17766 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17767 0 : info->fieldType = GF_SG_VRML_SFINT32;
17768 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap188;
17769 0 : return GF_OK;
17770 : case 188:
17771 0 : info->name = "extensionBap189";
17772 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17773 0 : info->fieldType = GF_SG_VRML_SFINT32;
17774 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap189;
17775 0 : return GF_OK;
17776 : case 189:
17777 0 : info->name = "extensionBap190";
17778 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17779 0 : info->fieldType = GF_SG_VRML_SFINT32;
17780 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap190;
17781 0 : return GF_OK;
17782 : case 190:
17783 0 : info->name = "extensionBap191";
17784 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17785 0 : info->fieldType = GF_SG_VRML_SFINT32;
17786 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap191;
17787 0 : return GF_OK;
17788 : case 191:
17789 0 : info->name = "extensionBap192";
17790 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17791 0 : info->fieldType = GF_SG_VRML_SFINT32;
17792 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap192;
17793 0 : return GF_OK;
17794 : case 192:
17795 0 : info->name = "extensionBap193";
17796 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17797 0 : info->fieldType = GF_SG_VRML_SFINT32;
17798 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap193;
17799 0 : return GF_OK;
17800 : case 193:
17801 0 : info->name = "extensionBap194";
17802 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17803 0 : info->fieldType = GF_SG_VRML_SFINT32;
17804 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap194;
17805 0 : return GF_OK;
17806 : case 194:
17807 0 : info->name = "extensionBap195";
17808 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17809 0 : info->fieldType = GF_SG_VRML_SFINT32;
17810 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap195;
17811 0 : return GF_OK;
17812 : case 195:
17813 0 : info->name = "extensionBap196";
17814 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17815 0 : info->fieldType = GF_SG_VRML_SFINT32;
17816 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap196;
17817 0 : return GF_OK;
17818 : case 196:
17819 0 : info->name = "extensionBap197";
17820 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17821 0 : info->fieldType = GF_SG_VRML_SFINT32;
17822 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap197;
17823 0 : return GF_OK;
17824 : case 197:
17825 0 : info->name = "extensionBap198";
17826 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17827 0 : info->fieldType = GF_SG_VRML_SFINT32;
17828 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap198;
17829 0 : return GF_OK;
17830 : case 198:
17831 0 : info->name = "extensionBap199";
17832 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17833 0 : info->fieldType = GF_SG_VRML_SFINT32;
17834 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap199;
17835 0 : return GF_OK;
17836 : case 199:
17837 0 : info->name = "extensionBap200";
17838 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17839 0 : info->fieldType = GF_SG_VRML_SFINT32;
17840 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap200;
17841 0 : return GF_OK;
17842 : case 200:
17843 0 : info->name = "extensionBap201";
17844 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17845 0 : info->fieldType = GF_SG_VRML_SFINT32;
17846 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap201;
17847 0 : return GF_OK;
17848 : case 201:
17849 0 : info->name = "extensionBap202";
17850 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17851 0 : info->fieldType = GF_SG_VRML_SFINT32;
17852 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap202;
17853 0 : return GF_OK;
17854 : case 202:
17855 0 : info->name = "extensionBap203";
17856 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17857 0 : info->fieldType = GF_SG_VRML_SFINT32;
17858 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap203;
17859 0 : return GF_OK;
17860 : case 203:
17861 0 : info->name = "extensionBap204";
17862 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17863 0 : info->fieldType = GF_SG_VRML_SFINT32;
17864 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap204;
17865 0 : return GF_OK;
17866 : case 204:
17867 0 : info->name = "extensionBap205";
17868 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17869 0 : info->fieldType = GF_SG_VRML_SFINT32;
17870 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap205;
17871 0 : return GF_OK;
17872 : case 205:
17873 0 : info->name = "extensionBap206";
17874 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17875 0 : info->fieldType = GF_SG_VRML_SFINT32;
17876 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap206;
17877 0 : return GF_OK;
17878 : case 206:
17879 0 : info->name = "extensionBap207";
17880 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17881 0 : info->fieldType = GF_SG_VRML_SFINT32;
17882 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap207;
17883 0 : return GF_OK;
17884 : case 207:
17885 0 : info->name = "extensionBap208";
17886 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17887 0 : info->fieldType = GF_SG_VRML_SFINT32;
17888 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap208;
17889 0 : return GF_OK;
17890 : case 208:
17891 0 : info->name = "extensionBap209";
17892 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17893 0 : info->fieldType = GF_SG_VRML_SFINT32;
17894 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap209;
17895 0 : return GF_OK;
17896 : case 209:
17897 0 : info->name = "extensionBap210";
17898 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17899 0 : info->fieldType = GF_SG_VRML_SFINT32;
17900 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap210;
17901 0 : return GF_OK;
17902 : case 210:
17903 0 : info->name = "extensionBap211";
17904 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17905 0 : info->fieldType = GF_SG_VRML_SFINT32;
17906 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap211;
17907 0 : return GF_OK;
17908 : case 211:
17909 0 : info->name = "extensionBap212";
17910 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17911 0 : info->fieldType = GF_SG_VRML_SFINT32;
17912 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap212;
17913 0 : return GF_OK;
17914 : case 212:
17915 0 : info->name = "extensionBap213";
17916 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17917 0 : info->fieldType = GF_SG_VRML_SFINT32;
17918 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap213;
17919 0 : return GF_OK;
17920 : case 213:
17921 0 : info->name = "extensionBap214";
17922 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17923 0 : info->fieldType = GF_SG_VRML_SFINT32;
17924 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap214;
17925 0 : return GF_OK;
17926 : case 214:
17927 0 : info->name = "extensionBap215";
17928 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17929 0 : info->fieldType = GF_SG_VRML_SFINT32;
17930 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap215;
17931 0 : return GF_OK;
17932 : case 215:
17933 0 : info->name = "extensionBap216";
17934 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17935 0 : info->fieldType = GF_SG_VRML_SFINT32;
17936 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap216;
17937 0 : return GF_OK;
17938 : case 216:
17939 0 : info->name = "extensionBap217";
17940 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17941 0 : info->fieldType = GF_SG_VRML_SFINT32;
17942 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap217;
17943 0 : return GF_OK;
17944 : case 217:
17945 0 : info->name = "extensionBap218";
17946 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17947 0 : info->fieldType = GF_SG_VRML_SFINT32;
17948 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap218;
17949 0 : return GF_OK;
17950 : case 218:
17951 0 : info->name = "extensionBap219";
17952 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17953 0 : info->fieldType = GF_SG_VRML_SFINT32;
17954 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap219;
17955 0 : return GF_OK;
17956 : case 219:
17957 0 : info->name = "extensionBap220";
17958 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17959 0 : info->fieldType = GF_SG_VRML_SFINT32;
17960 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap220;
17961 0 : return GF_OK;
17962 : case 220:
17963 0 : info->name = "extensionBap221";
17964 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17965 0 : info->fieldType = GF_SG_VRML_SFINT32;
17966 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap221;
17967 0 : return GF_OK;
17968 : case 221:
17969 0 : info->name = "extensionBap222";
17970 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17971 0 : info->fieldType = GF_SG_VRML_SFINT32;
17972 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap222;
17973 0 : return GF_OK;
17974 : case 222:
17975 0 : info->name = "extensionBap223";
17976 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17977 0 : info->fieldType = GF_SG_VRML_SFINT32;
17978 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap223;
17979 0 : return GF_OK;
17980 : case 223:
17981 0 : info->name = "extensionBap224";
17982 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17983 0 : info->fieldType = GF_SG_VRML_SFINT32;
17984 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap224;
17985 0 : return GF_OK;
17986 : case 224:
17987 0 : info->name = "extensionBap225";
17988 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17989 0 : info->fieldType = GF_SG_VRML_SFINT32;
17990 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap225;
17991 0 : return GF_OK;
17992 : case 225:
17993 0 : info->name = "extensionBap226";
17994 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17995 0 : info->fieldType = GF_SG_VRML_SFINT32;
17996 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap226;
17997 0 : return GF_OK;
17998 : case 226:
17999 0 : info->name = "extensionBap227";
18000 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18001 0 : info->fieldType = GF_SG_VRML_SFINT32;
18002 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap227;
18003 0 : return GF_OK;
18004 : case 227:
18005 0 : info->name = "extensionBap228";
18006 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18007 0 : info->fieldType = GF_SG_VRML_SFINT32;
18008 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap228;
18009 0 : return GF_OK;
18010 : case 228:
18011 0 : info->name = "extensionBap229";
18012 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18013 0 : info->fieldType = GF_SG_VRML_SFINT32;
18014 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap229;
18015 0 : return GF_OK;
18016 : case 229:
18017 0 : info->name = "extensionBap230";
18018 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18019 0 : info->fieldType = GF_SG_VRML_SFINT32;
18020 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap230;
18021 0 : return GF_OK;
18022 : case 230:
18023 0 : info->name = "extensionBap231";
18024 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18025 0 : info->fieldType = GF_SG_VRML_SFINT32;
18026 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap231;
18027 0 : return GF_OK;
18028 : case 231:
18029 0 : info->name = "extensionBap232";
18030 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18031 0 : info->fieldType = GF_SG_VRML_SFINT32;
18032 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap232;
18033 0 : return GF_OK;
18034 : case 232:
18035 0 : info->name = "extensionBap233";
18036 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18037 0 : info->fieldType = GF_SG_VRML_SFINT32;
18038 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap233;
18039 0 : return GF_OK;
18040 : case 233:
18041 0 : info->name = "extensionBap234";
18042 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18043 0 : info->fieldType = GF_SG_VRML_SFINT32;
18044 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap234;
18045 0 : return GF_OK;
18046 : case 234:
18047 0 : info->name = "extensionBap235";
18048 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18049 0 : info->fieldType = GF_SG_VRML_SFINT32;
18050 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap235;
18051 0 : return GF_OK;
18052 : case 235:
18053 0 : info->name = "extensionBap236";
18054 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18055 0 : info->fieldType = GF_SG_VRML_SFINT32;
18056 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap236;
18057 0 : return GF_OK;
18058 : case 236:
18059 0 : info->name = "extensionBap237";
18060 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18061 0 : info->fieldType = GF_SG_VRML_SFINT32;
18062 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap237;
18063 0 : return GF_OK;
18064 : case 237:
18065 0 : info->name = "extensionBap238";
18066 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18067 0 : info->fieldType = GF_SG_VRML_SFINT32;
18068 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap238;
18069 0 : return GF_OK;
18070 : case 238:
18071 0 : info->name = "extensionBap239";
18072 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18073 0 : info->fieldType = GF_SG_VRML_SFINT32;
18074 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap239;
18075 0 : return GF_OK;
18076 : case 239:
18077 0 : info->name = "extensionBap240";
18078 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18079 0 : info->fieldType = GF_SG_VRML_SFINT32;
18080 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap240;
18081 0 : return GF_OK;
18082 : case 240:
18083 0 : info->name = "extensionBap241";
18084 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18085 0 : info->fieldType = GF_SG_VRML_SFINT32;
18086 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap241;
18087 0 : return GF_OK;
18088 : case 241:
18089 0 : info->name = "extensionBap242";
18090 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18091 0 : info->fieldType = GF_SG_VRML_SFINT32;
18092 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap242;
18093 0 : return GF_OK;
18094 : case 242:
18095 0 : info->name = "extensionBap243";
18096 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18097 0 : info->fieldType = GF_SG_VRML_SFINT32;
18098 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap243;
18099 0 : return GF_OK;
18100 : case 243:
18101 0 : info->name = "extensionBap244";
18102 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18103 0 : info->fieldType = GF_SG_VRML_SFINT32;
18104 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap244;
18105 0 : return GF_OK;
18106 : case 244:
18107 0 : info->name = "extensionBap245";
18108 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18109 0 : info->fieldType = GF_SG_VRML_SFINT32;
18110 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap245;
18111 0 : return GF_OK;
18112 : case 245:
18113 0 : info->name = "extensionBap246";
18114 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18115 0 : info->fieldType = GF_SG_VRML_SFINT32;
18116 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap246;
18117 0 : return GF_OK;
18118 : case 246:
18119 0 : info->name = "extensionBap247";
18120 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18121 0 : info->fieldType = GF_SG_VRML_SFINT32;
18122 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap247;
18123 0 : return GF_OK;
18124 : case 247:
18125 0 : info->name = "extensionBap248";
18126 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18127 0 : info->fieldType = GF_SG_VRML_SFINT32;
18128 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap248;
18129 0 : return GF_OK;
18130 : case 248:
18131 0 : info->name = "extensionBap249";
18132 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18133 0 : info->fieldType = GF_SG_VRML_SFINT32;
18134 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap249;
18135 0 : return GF_OK;
18136 : case 249:
18137 0 : info->name = "extensionBap250";
18138 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18139 0 : info->fieldType = GF_SG_VRML_SFINT32;
18140 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap250;
18141 0 : return GF_OK;
18142 : case 250:
18143 0 : info->name = "extensionBap251";
18144 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18145 0 : info->fieldType = GF_SG_VRML_SFINT32;
18146 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap251;
18147 0 : return GF_OK;
18148 : case 251:
18149 0 : info->name = "extensionBap252";
18150 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18151 0 : info->fieldType = GF_SG_VRML_SFINT32;
18152 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap252;
18153 0 : return GF_OK;
18154 : case 252:
18155 0 : info->name = "extensionBap253";
18156 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18157 0 : info->fieldType = GF_SG_VRML_SFINT32;
18158 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap253;
18159 0 : return GF_OK;
18160 : case 253:
18161 0 : info->name = "extensionBap254";
18162 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18163 0 : info->fieldType = GF_SG_VRML_SFINT32;
18164 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap254;
18165 0 : return GF_OK;
18166 : case 254:
18167 0 : info->name = "extensionBap255";
18168 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18169 0 : info->fieldType = GF_SG_VRML_SFINT32;
18170 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap255;
18171 0 : return GF_OK;
18172 : case 255:
18173 0 : info->name = "extensionBap256";
18174 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18175 0 : info->fieldType = GF_SG_VRML_SFINT32;
18176 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap256;
18177 0 : return GF_OK;
18178 : case 256:
18179 0 : info->name = "extensionBap257";
18180 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18181 0 : info->fieldType = GF_SG_VRML_SFINT32;
18182 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap257;
18183 0 : return GF_OK;
18184 : case 257:
18185 0 : info->name = "extensionBap258";
18186 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18187 0 : info->fieldType = GF_SG_VRML_SFINT32;
18188 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap258;
18189 0 : return GF_OK;
18190 : case 258:
18191 0 : info->name = "extensionBap259";
18192 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18193 0 : info->fieldType = GF_SG_VRML_SFINT32;
18194 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap259;
18195 0 : return GF_OK;
18196 : case 259:
18197 0 : info->name = "extensionBap260";
18198 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18199 0 : info->fieldType = GF_SG_VRML_SFINT32;
18200 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap260;
18201 0 : return GF_OK;
18202 : case 260:
18203 0 : info->name = "extensionBap261";
18204 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18205 0 : info->fieldType = GF_SG_VRML_SFINT32;
18206 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap261;
18207 0 : return GF_OK;
18208 : case 261:
18209 0 : info->name = "extensionBap262";
18210 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18211 0 : info->fieldType = GF_SG_VRML_SFINT32;
18212 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap262;
18213 0 : return GF_OK;
18214 : case 262:
18215 0 : info->name = "extensionBap263";
18216 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18217 0 : info->fieldType = GF_SG_VRML_SFINT32;
18218 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap263;
18219 0 : return GF_OK;
18220 : case 263:
18221 0 : info->name = "extensionBap264";
18222 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18223 0 : info->fieldType = GF_SG_VRML_SFINT32;
18224 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap264;
18225 0 : return GF_OK;
18226 : case 264:
18227 0 : info->name = "extensionBap265";
18228 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18229 0 : info->fieldType = GF_SG_VRML_SFINT32;
18230 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap265;
18231 0 : return GF_OK;
18232 : case 265:
18233 0 : info->name = "extensionBap266";
18234 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18235 0 : info->fieldType = GF_SG_VRML_SFINT32;
18236 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap266;
18237 0 : return GF_OK;
18238 : case 266:
18239 0 : info->name = "extensionBap267";
18240 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18241 0 : info->fieldType = GF_SG_VRML_SFINT32;
18242 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap267;
18243 0 : return GF_OK;
18244 : case 267:
18245 0 : info->name = "extensionBap268";
18246 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18247 0 : info->fieldType = GF_SG_VRML_SFINT32;
18248 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap268;
18249 0 : return GF_OK;
18250 : case 268:
18251 0 : info->name = "extensionBap269";
18252 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18253 0 : info->fieldType = GF_SG_VRML_SFINT32;
18254 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap269;
18255 0 : return GF_OK;
18256 : case 269:
18257 0 : info->name = "extensionBap270";
18258 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18259 0 : info->fieldType = GF_SG_VRML_SFINT32;
18260 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap270;
18261 0 : return GF_OK;
18262 : case 270:
18263 0 : info->name = "extensionBap271";
18264 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18265 0 : info->fieldType = GF_SG_VRML_SFINT32;
18266 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap271;
18267 0 : return GF_OK;
18268 : case 271:
18269 0 : info->name = "extensionBap272";
18270 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18271 0 : info->fieldType = GF_SG_VRML_SFINT32;
18272 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap272;
18273 0 : return GF_OK;
18274 : case 272:
18275 0 : info->name = "extensionBap273";
18276 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18277 0 : info->fieldType = GF_SG_VRML_SFINT32;
18278 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap273;
18279 0 : return GF_OK;
18280 : case 273:
18281 0 : info->name = "extensionBap274";
18282 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18283 0 : info->fieldType = GF_SG_VRML_SFINT32;
18284 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap274;
18285 0 : return GF_OK;
18286 : case 274:
18287 0 : info->name = "extensionBap275";
18288 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18289 0 : info->fieldType = GF_SG_VRML_SFINT32;
18290 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap275;
18291 0 : return GF_OK;
18292 : case 275:
18293 0 : info->name = "extensionBap276";
18294 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18295 0 : info->fieldType = GF_SG_VRML_SFINT32;
18296 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap276;
18297 0 : return GF_OK;
18298 : case 276:
18299 0 : info->name = "extensionBap277";
18300 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18301 0 : info->fieldType = GF_SG_VRML_SFINT32;
18302 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap277;
18303 0 : return GF_OK;
18304 : case 277:
18305 0 : info->name = "extensionBap278";
18306 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18307 0 : info->fieldType = GF_SG_VRML_SFINT32;
18308 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap278;
18309 0 : return GF_OK;
18310 : case 278:
18311 0 : info->name = "extensionBap279";
18312 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18313 0 : info->fieldType = GF_SG_VRML_SFINT32;
18314 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap279;
18315 0 : return GF_OK;
18316 : case 279:
18317 0 : info->name = "extensionBap280";
18318 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18319 0 : info->fieldType = GF_SG_VRML_SFINT32;
18320 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap280;
18321 0 : return GF_OK;
18322 : case 280:
18323 0 : info->name = "extensionBap281";
18324 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18325 0 : info->fieldType = GF_SG_VRML_SFINT32;
18326 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap281;
18327 0 : return GF_OK;
18328 : case 281:
18329 0 : info->name = "extensionBap282";
18330 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18331 0 : info->fieldType = GF_SG_VRML_SFINT32;
18332 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap282;
18333 0 : return GF_OK;
18334 : case 282:
18335 0 : info->name = "extensionBap283";
18336 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18337 0 : info->fieldType = GF_SG_VRML_SFINT32;
18338 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap283;
18339 0 : return GF_OK;
18340 : case 283:
18341 0 : info->name = "extensionBap284";
18342 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18343 0 : info->fieldType = GF_SG_VRML_SFINT32;
18344 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap284;
18345 0 : return GF_OK;
18346 : case 284:
18347 0 : info->name = "extensionBap285";
18348 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18349 0 : info->fieldType = GF_SG_VRML_SFINT32;
18350 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap285;
18351 0 : return GF_OK;
18352 : case 285:
18353 0 : info->name = "extensionBap286";
18354 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18355 0 : info->fieldType = GF_SG_VRML_SFINT32;
18356 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap286;
18357 0 : return GF_OK;
18358 : case 286:
18359 0 : info->name = "extensionBap287";
18360 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18361 0 : info->fieldType = GF_SG_VRML_SFINT32;
18362 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap287;
18363 0 : return GF_OK;
18364 : case 287:
18365 0 : info->name = "extensionBap288";
18366 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18367 0 : info->fieldType = GF_SG_VRML_SFINT32;
18368 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap288;
18369 0 : return GF_OK;
18370 : case 288:
18371 0 : info->name = "extensionBap289";
18372 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18373 0 : info->fieldType = GF_SG_VRML_SFINT32;
18374 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap289;
18375 0 : return GF_OK;
18376 : case 289:
18377 0 : info->name = "extensionBap290";
18378 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18379 0 : info->fieldType = GF_SG_VRML_SFINT32;
18380 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap290;
18381 0 : return GF_OK;
18382 : case 290:
18383 0 : info->name = "extensionBap291";
18384 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18385 0 : info->fieldType = GF_SG_VRML_SFINT32;
18386 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap291;
18387 0 : return GF_OK;
18388 : case 291:
18389 0 : info->name = "extensionBap292";
18390 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18391 0 : info->fieldType = GF_SG_VRML_SFINT32;
18392 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap292;
18393 0 : return GF_OK;
18394 : case 292:
18395 0 : info->name = "extensionBap293";
18396 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18397 0 : info->fieldType = GF_SG_VRML_SFINT32;
18398 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap293;
18399 0 : return GF_OK;
18400 : case 293:
18401 0 : info->name = "extensionBap294";
18402 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18403 0 : info->fieldType = GF_SG_VRML_SFINT32;
18404 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap294;
18405 0 : return GF_OK;
18406 : case 294:
18407 0 : info->name = "extensionBap295";
18408 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18409 0 : info->fieldType = GF_SG_VRML_SFINT32;
18410 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap295;
18411 0 : return GF_OK;
18412 : case 295:
18413 0 : info->name = "extensionBap296";
18414 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18415 0 : info->fieldType = GF_SG_VRML_SFINT32;
18416 0 : info->far_ptr = & ((M_BAP *) node)->extensionBap296;
18417 0 : return GF_OK;
18418 : default:
18419 0 : return GF_BAD_PARAM;
18420 : }
18421 0 : }
18422 :
18423 :
18424 : static s32 BAP_get_field_index_by_name(char *name)
18425 : {
18426 0 : if (!strcmp("sacroiliac_tilt", name)) return 0;
18427 0 : if (!strcmp("sacroiliac_torsion", name)) return 1;
18428 0 : if (!strcmp("sacroiliac_roll", name)) return 2;
18429 0 : if (!strcmp("l_hip_flexion", name)) return 3;
18430 0 : if (!strcmp("r_hip_flexion", name)) return 4;
18431 0 : if (!strcmp("l_hip_abduct", name)) return 5;
18432 0 : if (!strcmp("r_hip_abduct", name)) return 6;
18433 0 : if (!strcmp("l_hip_twisting", name)) return 7;
18434 0 : if (!strcmp("r_hip_twisting", name)) return 8;
18435 0 : if (!strcmp("l_knee_flexion", name)) return 9;
18436 0 : if (!strcmp("r_knee_flexion", name)) return 10;
18437 0 : if (!strcmp("l_knee_twisting", name)) return 11;
18438 0 : if (!strcmp("r_knee_twisting", name)) return 12;
18439 0 : if (!strcmp("l_ankle_flexion", name)) return 13;
18440 0 : if (!strcmp("r_ankle_flexion", name)) return 14;
18441 0 : if (!strcmp("l_ankle_twisting", name)) return 15;
18442 0 : if (!strcmp("r_ankle_twisting", name)) return 16;
18443 0 : if (!strcmp("l_subtalar_flexion", name)) return 17;
18444 0 : if (!strcmp("r_subtalar_flexion", name)) return 18;
18445 0 : if (!strcmp("l_midtarsal_flexion", name)) return 19;
18446 0 : if (!strcmp("r_midtarsal_flexion", name)) return 20;
18447 0 : if (!strcmp("l_metatarsal_flexion", name)) return 21;
18448 0 : if (!strcmp("r_metatarsal_flexion", name)) return 22;
18449 0 : if (!strcmp("l_sternoclavicular_abduct", name)) return 23;
18450 0 : if (!strcmp("r_sternoclavicular_abduct", name)) return 24;
18451 0 : if (!strcmp("l_sternoclavicular_rotate", name)) return 25;
18452 0 : if (!strcmp("r_sternoclavicular_rotate", name)) return 26;
18453 0 : if (!strcmp("l_acromioclavicular_abduct", name)) return 27;
18454 0 : if (!strcmp("r_acromioclavicular_abduct", name)) return 28;
18455 0 : if (!strcmp("l_acromioclavicular_rotate", name)) return 29;
18456 0 : if (!strcmp("r_acromioclavicular_rotate", name)) return 30;
18457 0 : if (!strcmp("l_shoulder_flexion", name)) return 31;
18458 0 : if (!strcmp("r_shoulder_flexion", name)) return 32;
18459 0 : if (!strcmp("l_shoulder_abduct", name)) return 33;
18460 0 : if (!strcmp("r_shoulder_abduct", name)) return 34;
18461 0 : if (!strcmp("l_shoulder_twisting", name)) return 35;
18462 0 : if (!strcmp("r_shoulder_twisting", name)) return 36;
18463 0 : if (!strcmp("l_elbow_flexion", name)) return 37;
18464 0 : if (!strcmp("r_elbow_flexion", name)) return 38;
18465 0 : if (!strcmp("l_elbow_twisting", name)) return 39;
18466 0 : if (!strcmp("r_elbow_twisting", name)) return 40;
18467 0 : if (!strcmp("l_wrist_flexion", name)) return 41;
18468 0 : if (!strcmp("r_wrist_flexion", name)) return 42;
18469 0 : if (!strcmp("l_wrist_pivot", name)) return 43;
18470 0 : if (!strcmp("r_wrist_pivot", name)) return 44;
18471 0 : if (!strcmp("l_wrist_twisting", name)) return 45;
18472 0 : if (!strcmp("r_wrist_twisting", name)) return 46;
18473 0 : if (!strcmp("skullbase_roll", name)) return 47;
18474 0 : if (!strcmp("skullbase_torsion", name)) return 48;
18475 0 : if (!strcmp("skullbase_tilt", name)) return 49;
18476 0 : if (!strcmp("vc1roll", name)) return 50;
18477 0 : if (!strcmp("vc1torsion", name)) return 51;
18478 0 : if (!strcmp("vc1tilt", name)) return 52;
18479 0 : if (!strcmp("vc2roll", name)) return 53;
18480 0 : if (!strcmp("vc2torsion", name)) return 54;
18481 0 : if (!strcmp("vc2tilt", name)) return 55;
18482 0 : if (!strcmp("vc3roll", name)) return 56;
18483 0 : if (!strcmp("vc3torsion", name)) return 57;
18484 0 : if (!strcmp("vc3tilt", name)) return 58;
18485 0 : if (!strcmp("vc4roll", name)) return 59;
18486 0 : if (!strcmp("vc4torsion", name)) return 60;
18487 0 : if (!strcmp("vc4tilt", name)) return 61;
18488 0 : if (!strcmp("vc5roll", name)) return 62;
18489 0 : if (!strcmp("vc5torsion", name)) return 63;
18490 0 : if (!strcmp("vc5tilt", name)) return 64;
18491 0 : if (!strcmp("vc6roll", name)) return 65;
18492 0 : if (!strcmp("vc6torsion", name)) return 66;
18493 0 : if (!strcmp("vc6tilt", name)) return 67;
18494 0 : if (!strcmp("vc7roll", name)) return 68;
18495 0 : if (!strcmp("vc7torsion", name)) return 69;
18496 0 : if (!strcmp("vc7tilt", name)) return 70;
18497 0 : if (!strcmp("vt1roll", name)) return 71;
18498 0 : if (!strcmp("vt1torsion", name)) return 72;
18499 0 : if (!strcmp("vt1tilt", name)) return 73;
18500 0 : if (!strcmp("vt2roll", name)) return 74;
18501 0 : if (!strcmp("vt2torsion", name)) return 75;
18502 0 : if (!strcmp("vt2tilt", name)) return 76;
18503 0 : if (!strcmp("vt3roll", name)) return 77;
18504 0 : if (!strcmp("vt3torsion", name)) return 78;
18505 0 : if (!strcmp("vt3tilt", name)) return 79;
18506 0 : if (!strcmp("vt4roll", name)) return 80;
18507 0 : if (!strcmp("vt4torsion", name)) return 81;
18508 0 : if (!strcmp("vt4tilt", name)) return 82;
18509 0 : if (!strcmp("vt5roll", name)) return 83;
18510 0 : if (!strcmp("vt5torsion", name)) return 84;
18511 0 : if (!strcmp("vt5tilt", name)) return 85;
18512 0 : if (!strcmp("vt6roll", name)) return 86;
18513 0 : if (!strcmp("vt6torsion", name)) return 87;
18514 0 : if (!strcmp("vt6tilt", name)) return 88;
18515 0 : if (!strcmp("vt7roll", name)) return 89;
18516 0 : if (!strcmp("vt7torsion", name)) return 90;
18517 0 : if (!strcmp("vt7tilt", name)) return 91;
18518 0 : if (!strcmp("vt8roll", name)) return 92;
18519 0 : if (!strcmp("vt8torsion", name)) return 93;
18520 0 : if (!strcmp("vt8tilt", name)) return 94;
18521 0 : if (!strcmp("vt9roll", name)) return 95;
18522 0 : if (!strcmp("vt9torsion", name)) return 96;
18523 0 : if (!strcmp("vt9tilt", name)) return 97;
18524 0 : if (!strcmp("vt10roll", name)) return 98;
18525 0 : if (!strcmp("vt10torsion", name)) return 99;
18526 0 : if (!strcmp("vt10tilt", name)) return 100;
18527 0 : if (!strcmp("vt11roll", name)) return 101;
18528 0 : if (!strcmp("vt11torsion", name)) return 102;
18529 0 : if (!strcmp("vt11tilt", name)) return 103;
18530 0 : if (!strcmp("vt12roll", name)) return 104;
18531 0 : if (!strcmp("vt12torsion", name)) return 105;
18532 0 : if (!strcmp("vt12tilt", name)) return 106;
18533 0 : if (!strcmp("vl1roll", name)) return 107;
18534 0 : if (!strcmp("vl1torsion", name)) return 108;
18535 0 : if (!strcmp("vl1tilt", name)) return 109;
18536 0 : if (!strcmp("vl2roll", name)) return 110;
18537 0 : if (!strcmp("vl2torsion", name)) return 111;
18538 0 : if (!strcmp("vl2tilt", name)) return 112;
18539 0 : if (!strcmp("vl3roll", name)) return 113;
18540 0 : if (!strcmp("vl3torsion", name)) return 114;
18541 0 : if (!strcmp("vl3tilt", name)) return 115;
18542 0 : if (!strcmp("vl4roll", name)) return 116;
18543 0 : if (!strcmp("vl4torsion", name)) return 117;
18544 0 : if (!strcmp("vl4tilt", name)) return 118;
18545 0 : if (!strcmp("vl5roll", name)) return 119;
18546 0 : if (!strcmp("vl5torsion", name)) return 120;
18547 0 : if (!strcmp("vl5tilt", name)) return 121;
18548 0 : if (!strcmp("l_pinky0_flexion", name)) return 122;
18549 0 : if (!strcmp("r_pinky0_flexion", name)) return 123;
18550 0 : if (!strcmp("l_pinky1_flexion", name)) return 124;
18551 0 : if (!strcmp("r_pinky1_flexion", name)) return 125;
18552 0 : if (!strcmp("l_pinky1_pivot", name)) return 126;
18553 0 : if (!strcmp("r_pinky1_pivot", name)) return 127;
18554 0 : if (!strcmp("l_pinky1_twisting", name)) return 128;
18555 0 : if (!strcmp("r_pinky1_twisting", name)) return 129;
18556 0 : if (!strcmp("l_pinky2_flexion", name)) return 130;
18557 0 : if (!strcmp("r_pinky2_flexion", name)) return 131;
18558 0 : if (!strcmp("l_pinky3_flexion", name)) return 132;
18559 0 : if (!strcmp("r_pinky3_flexion", name)) return 133;
18560 0 : if (!strcmp("l_ring0_flexion", name)) return 134;
18561 0 : if (!strcmp("r_ring0_flexion", name)) return 135;
18562 0 : if (!strcmp("l_ring1_flexion", name)) return 136;
18563 0 : if (!strcmp("r_ring1_flexion", name)) return 137;
18564 0 : if (!strcmp("l_ring1_pivot", name)) return 138;
18565 0 : if (!strcmp("r_ring1_pivot", name)) return 139;
18566 0 : if (!strcmp("l_ring1_twisting", name)) return 140;
18567 0 : if (!strcmp("r_ring1_twisting", name)) return 141;
18568 0 : if (!strcmp("l_ring2_flexion", name)) return 142;
18569 0 : if (!strcmp("r_ring2_flexion", name)) return 143;
18570 0 : if (!strcmp("l_ring3_flexion", name)) return 144;
18571 0 : if (!strcmp("r_ring3_flexion", name)) return 145;
18572 0 : if (!strcmp("l_middle0_flexion", name)) return 146;
18573 0 : if (!strcmp("r_middle0_flexion", name)) return 147;
18574 0 : if (!strcmp("l_middle1_flexion", name)) return 148;
18575 0 : if (!strcmp("r_middle1_flexion", name)) return 149;
18576 0 : if (!strcmp("l_middle1_pivot", name)) return 150;
18577 0 : if (!strcmp("r_middle1_pivot", name)) return 151;
18578 0 : if (!strcmp("l_middle1_twisting", name)) return 152;
18579 0 : if (!strcmp("r_middle1_twisting", name)) return 153;
18580 0 : if (!strcmp("l_middle2_flexion", name)) return 154;
18581 0 : if (!strcmp("r_middle2_flexion", name)) return 155;
18582 0 : if (!strcmp("l_middle3_flexion", name)) return 156;
18583 0 : if (!strcmp("r_middle3_flexion", name)) return 157;
18584 0 : if (!strcmp("l_index0_flexion", name)) return 158;
18585 0 : if (!strcmp("r_index0_flexion", name)) return 159;
18586 0 : if (!strcmp("l_index1_flexion", name)) return 160;
18587 0 : if (!strcmp("r_index1_flexion", name)) return 161;
18588 0 : if (!strcmp("l_index1_pivot", name)) return 162;
18589 0 : if (!strcmp("r_index1_pivot", name)) return 163;
18590 0 : if (!strcmp("l_index1_twisting", name)) return 164;
18591 0 : if (!strcmp("r_index1_twisting", name)) return 165;
18592 0 : if (!strcmp("l_index2_flexion", name)) return 166;
18593 0 : if (!strcmp("r_index2_flexion", name)) return 167;
18594 0 : if (!strcmp("l_index3_flexion", name)) return 168;
18595 0 : if (!strcmp("r_index3_flexion", name)) return 169;
18596 0 : if (!strcmp("l_thumb1_flexion", name)) return 170;
18597 0 : if (!strcmp("r_thumb1_flexion", name)) return 171;
18598 0 : if (!strcmp("l_thumb1_pivot", name)) return 172;
18599 0 : if (!strcmp("r_thumb1_pivot", name)) return 173;
18600 0 : if (!strcmp("l_thumb1_twisting", name)) return 174;
18601 0 : if (!strcmp("r_thumb1_twisting", name)) return 175;
18602 0 : if (!strcmp("l_thumb2_flexion", name)) return 176;
18603 0 : if (!strcmp("r_thumb2_flexion", name)) return 177;
18604 0 : if (!strcmp("l_thumb3_flexion", name)) return 178;
18605 0 : if (!strcmp("r_thumb3_flexion", name)) return 179;
18606 0 : if (!strcmp("HumanoidRoot_tr_vertical", name)) return 180;
18607 0 : if (!strcmp("HumanoidRoot_tr_lateral", name)) return 181;
18608 0 : if (!strcmp("HumanoidRoot_tr_frontal", name)) return 182;
18609 0 : if (!strcmp("HumanoidRoot_rt_body_turn", name)) return 183;
18610 0 : if (!strcmp("HumanoidRoot_rt_body_roll", name)) return 184;
18611 0 : if (!strcmp("HumanoidRoot_rt_body_tilt", name)) return 185;
18612 0 : if (!strcmp("extensionBap187", name)) return 186;
18613 0 : if (!strcmp("extensionBap188", name)) return 187;
18614 0 : if (!strcmp("extensionBap189", name)) return 188;
18615 0 : if (!strcmp("extensionBap190", name)) return 189;
18616 0 : if (!strcmp("extensionBap191", name)) return 190;
18617 0 : if (!strcmp("extensionBap192", name)) return 191;
18618 0 : if (!strcmp("extensionBap193", name)) return 192;
18619 0 : if (!strcmp("extensionBap194", name)) return 193;
18620 0 : if (!strcmp("extensionBap195", name)) return 194;
18621 0 : if (!strcmp("extensionBap196", name)) return 195;
18622 0 : if (!strcmp("extensionBap197", name)) return 196;
18623 0 : if (!strcmp("extensionBap198", name)) return 197;
18624 0 : if (!strcmp("extensionBap199", name)) return 198;
18625 0 : if (!strcmp("extensionBap200", name)) return 199;
18626 0 : if (!strcmp("extensionBap201", name)) return 200;
18627 0 : if (!strcmp("extensionBap202", name)) return 201;
18628 0 : if (!strcmp("extensionBap203", name)) return 202;
18629 0 : if (!strcmp("extensionBap204", name)) return 203;
18630 0 : if (!strcmp("extensionBap205", name)) return 204;
18631 0 : if (!strcmp("extensionBap206", name)) return 205;
18632 0 : if (!strcmp("extensionBap207", name)) return 206;
18633 0 : if (!strcmp("extensionBap208", name)) return 207;
18634 0 : if (!strcmp("extensionBap209", name)) return 208;
18635 0 : if (!strcmp("extensionBap210", name)) return 209;
18636 0 : if (!strcmp("extensionBap211", name)) return 210;
18637 0 : if (!strcmp("extensionBap212", name)) return 211;
18638 0 : if (!strcmp("extensionBap213", name)) return 212;
18639 0 : if (!strcmp("extensionBap214", name)) return 213;
18640 0 : if (!strcmp("extensionBap215", name)) return 214;
18641 0 : if (!strcmp("extensionBap216", name)) return 215;
18642 0 : if (!strcmp("extensionBap217", name)) return 216;
18643 0 : if (!strcmp("extensionBap218", name)) return 217;
18644 0 : if (!strcmp("extensionBap219", name)) return 218;
18645 0 : if (!strcmp("extensionBap220", name)) return 219;
18646 0 : if (!strcmp("extensionBap221", name)) return 220;
18647 0 : if (!strcmp("extensionBap222", name)) return 221;
18648 0 : if (!strcmp("extensionBap223", name)) return 222;
18649 0 : if (!strcmp("extensionBap224", name)) return 223;
18650 0 : if (!strcmp("extensionBap225", name)) return 224;
18651 0 : if (!strcmp("extensionBap226", name)) return 225;
18652 0 : if (!strcmp("extensionBap227", name)) return 226;
18653 0 : if (!strcmp("extensionBap228", name)) return 227;
18654 0 : if (!strcmp("extensionBap229", name)) return 228;
18655 0 : if (!strcmp("extensionBap230", name)) return 229;
18656 0 : if (!strcmp("extensionBap231", name)) return 230;
18657 0 : if (!strcmp("extensionBap232", name)) return 231;
18658 0 : if (!strcmp("extensionBap233", name)) return 232;
18659 0 : if (!strcmp("extensionBap234", name)) return 233;
18660 0 : if (!strcmp("extensionBap235", name)) return 234;
18661 0 : if (!strcmp("extensionBap236", name)) return 235;
18662 0 : if (!strcmp("extensionBap237", name)) return 236;
18663 0 : if (!strcmp("extensionBap238", name)) return 237;
18664 0 : if (!strcmp("extensionBap239", name)) return 238;
18665 0 : if (!strcmp("extensionBap240", name)) return 239;
18666 0 : if (!strcmp("extensionBap241", name)) return 240;
18667 0 : if (!strcmp("extensionBap242", name)) return 241;
18668 0 : if (!strcmp("extensionBap243", name)) return 242;
18669 0 : if (!strcmp("extensionBap244", name)) return 243;
18670 0 : if (!strcmp("extensionBap245", name)) return 244;
18671 0 : if (!strcmp("extensionBap246", name)) return 245;
18672 0 : if (!strcmp("extensionBap247", name)) return 246;
18673 0 : if (!strcmp("extensionBap248", name)) return 247;
18674 0 : if (!strcmp("extensionBap249", name)) return 248;
18675 0 : if (!strcmp("extensionBap250", name)) return 249;
18676 0 : if (!strcmp("extensionBap251", name)) return 250;
18677 0 : if (!strcmp("extensionBap252", name)) return 251;
18678 0 : if (!strcmp("extensionBap253", name)) return 252;
18679 0 : if (!strcmp("extensionBap254", name)) return 253;
18680 0 : if (!strcmp("extensionBap255", name)) return 254;
18681 0 : if (!strcmp("extensionBap256", name)) return 255;
18682 0 : if (!strcmp("extensionBap257", name)) return 256;
18683 0 : if (!strcmp("extensionBap258", name)) return 257;
18684 0 : if (!strcmp("extensionBap259", name)) return 258;
18685 0 : if (!strcmp("extensionBap260", name)) return 259;
18686 0 : if (!strcmp("extensionBap261", name)) return 260;
18687 0 : if (!strcmp("extensionBap262", name)) return 261;
18688 0 : if (!strcmp("extensionBap263", name)) return 262;
18689 0 : if (!strcmp("extensionBap264", name)) return 263;
18690 0 : if (!strcmp("extensionBap265", name)) return 264;
18691 0 : if (!strcmp("extensionBap266", name)) return 265;
18692 0 : if (!strcmp("extensionBap267", name)) return 266;
18693 0 : if (!strcmp("extensionBap268", name)) return 267;
18694 0 : if (!strcmp("extensionBap269", name)) return 268;
18695 0 : if (!strcmp("extensionBap270", name)) return 269;
18696 0 : if (!strcmp("extensionBap271", name)) return 270;
18697 0 : if (!strcmp("extensionBap272", name)) return 271;
18698 0 : if (!strcmp("extensionBap273", name)) return 272;
18699 0 : if (!strcmp("extensionBap274", name)) return 273;
18700 0 : if (!strcmp("extensionBap275", name)) return 274;
18701 0 : if (!strcmp("extensionBap276", name)) return 275;
18702 0 : if (!strcmp("extensionBap277", name)) return 276;
18703 0 : if (!strcmp("extensionBap278", name)) return 277;
18704 0 : if (!strcmp("extensionBap279", name)) return 278;
18705 0 : if (!strcmp("extensionBap280", name)) return 279;
18706 0 : if (!strcmp("extensionBap281", name)) return 280;
18707 0 : if (!strcmp("extensionBap282", name)) return 281;
18708 0 : if (!strcmp("extensionBap283", name)) return 282;
18709 0 : if (!strcmp("extensionBap284", name)) return 283;
18710 0 : if (!strcmp("extensionBap285", name)) return 284;
18711 0 : if (!strcmp("extensionBap286", name)) return 285;
18712 0 : if (!strcmp("extensionBap287", name)) return 286;
18713 0 : if (!strcmp("extensionBap288", name)) return 287;
18714 0 : if (!strcmp("extensionBap289", name)) return 288;
18715 0 : if (!strcmp("extensionBap290", name)) return 289;
18716 0 : if (!strcmp("extensionBap291", name)) return 290;
18717 0 : if (!strcmp("extensionBap292", name)) return 291;
18718 0 : if (!strcmp("extensionBap293", name)) return 292;
18719 0 : if (!strcmp("extensionBap294", name)) return 293;
18720 0 : if (!strcmp("extensionBap295", name)) return 294;
18721 0 : if (!strcmp("extensionBap296", name)) return 295;
18722 0 : return -1;
18723 0 : }
18724 : static Bool BAP_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
18725 : {
18726 0 : switch (FieldIndex) {
18727 : case 0:
18728 0 : *AType = 0;
18729 0 : *QType = 0;
18730 0 : *b_min = FIX_MIN;
18731 0 : *b_max = FIX_MAX;
18732 0 : return 1;
18733 : case 1:
18734 0 : *AType = 0;
18735 0 : *QType = 0;
18736 0 : *b_min = FIX_MIN;
18737 0 : *b_max = FIX_MAX;
18738 0 : return 1;
18739 : case 2:
18740 0 : *AType = 0;
18741 0 : *QType = 0;
18742 0 : *b_min = FIX_MIN;
18743 0 : *b_max = FIX_MAX;
18744 0 : return 1;
18745 : case 3:
18746 0 : *AType = 0;
18747 0 : *QType = 0;
18748 0 : *b_min = FIX_MIN;
18749 0 : *b_max = FIX_MAX;
18750 0 : return 1;
18751 : case 4:
18752 0 : *AType = 0;
18753 0 : *QType = 0;
18754 0 : *b_min = FIX_MIN;
18755 0 : *b_max = FIX_MAX;
18756 0 : return 1;
18757 : case 5:
18758 0 : *AType = 0;
18759 0 : *QType = 0;
18760 0 : *b_min = FIX_MIN;
18761 0 : *b_max = FIX_MAX;
18762 0 : return 1;
18763 : case 6:
18764 0 : *AType = 0;
18765 0 : *QType = 0;
18766 0 : *b_min = FIX_MIN;
18767 0 : *b_max = FIX_MAX;
18768 0 : return 1;
18769 : case 7:
18770 0 : *AType = 0;
18771 0 : *QType = 0;
18772 0 : *b_min = FIX_MIN;
18773 0 : *b_max = FIX_MAX;
18774 0 : return 1;
18775 : case 8:
18776 0 : *AType = 0;
18777 0 : *QType = 0;
18778 0 : *b_min = FIX_MIN;
18779 0 : *b_max = FIX_MAX;
18780 0 : return 1;
18781 : case 9:
18782 0 : *AType = 0;
18783 0 : *QType = 0;
18784 0 : *b_min = FIX_MIN;
18785 0 : *b_max = FIX_MAX;
18786 0 : return 1;
18787 : case 10:
18788 0 : *AType = 0;
18789 0 : *QType = 0;
18790 0 : *b_min = FIX_MIN;
18791 0 : *b_max = FIX_MAX;
18792 0 : return 1;
18793 : case 11:
18794 0 : *AType = 0;
18795 0 : *QType = 0;
18796 0 : *b_min = FIX_MIN;
18797 0 : *b_max = FIX_MAX;
18798 0 : return 1;
18799 : case 12:
18800 0 : *AType = 0;
18801 0 : *QType = 0;
18802 0 : *b_min = FIX_MIN;
18803 0 : *b_max = FIX_MAX;
18804 0 : return 1;
18805 : case 13:
18806 0 : *AType = 0;
18807 0 : *QType = 0;
18808 0 : *b_min = FIX_MIN;
18809 0 : *b_max = FIX_MAX;
18810 0 : return 1;
18811 : case 14:
18812 0 : *AType = 0;
18813 0 : *QType = 0;
18814 0 : *b_min = FIX_MIN;
18815 0 : *b_max = FIX_MAX;
18816 0 : return 1;
18817 : case 15:
18818 0 : *AType = 0;
18819 0 : *QType = 0;
18820 0 : *b_min = FIX_MIN;
18821 0 : *b_max = FIX_MAX;
18822 0 : return 1;
18823 : case 16:
18824 0 : *AType = 0;
18825 0 : *QType = 0;
18826 0 : *b_min = FIX_MIN;
18827 0 : *b_max = FIX_MAX;
18828 0 : return 1;
18829 : case 17:
18830 0 : *AType = 0;
18831 0 : *QType = 0;
18832 0 : *b_min = FIX_MIN;
18833 0 : *b_max = FIX_MAX;
18834 0 : return 1;
18835 : case 18:
18836 0 : *AType = 0;
18837 0 : *QType = 0;
18838 0 : *b_min = FIX_MIN;
18839 0 : *b_max = FIX_MAX;
18840 0 : return 1;
18841 : case 19:
18842 0 : *AType = 0;
18843 0 : *QType = 0;
18844 0 : *b_min = FIX_MIN;
18845 0 : *b_max = FIX_MAX;
18846 0 : return 1;
18847 : case 20:
18848 0 : *AType = 0;
18849 0 : *QType = 0;
18850 0 : *b_min = FIX_MIN;
18851 0 : *b_max = FIX_MAX;
18852 0 : return 1;
18853 : case 21:
18854 0 : *AType = 0;
18855 0 : *QType = 0;
18856 0 : *b_min = FIX_MIN;
18857 0 : *b_max = FIX_MAX;
18858 0 : return 1;
18859 : case 22:
18860 0 : *AType = 0;
18861 0 : *QType = 0;
18862 0 : *b_min = FIX_MIN;
18863 0 : *b_max = FIX_MAX;
18864 0 : return 1;
18865 : case 23:
18866 0 : *AType = 0;
18867 0 : *QType = 0;
18868 0 : *b_min = FIX_MIN;
18869 0 : *b_max = FIX_MAX;
18870 0 : return 1;
18871 : case 24:
18872 0 : *AType = 0;
18873 0 : *QType = 0;
18874 0 : *b_min = FIX_MIN;
18875 0 : *b_max = FIX_MAX;
18876 0 : return 1;
18877 : case 25:
18878 0 : *AType = 0;
18879 0 : *QType = 0;
18880 0 : *b_min = FIX_MIN;
18881 0 : *b_max = FIX_MAX;
18882 0 : return 1;
18883 : case 26:
18884 0 : *AType = 0;
18885 0 : *QType = 0;
18886 0 : *b_min = FIX_MIN;
18887 0 : *b_max = FIX_MAX;
18888 0 : return 1;
18889 : case 27:
18890 0 : *AType = 0;
18891 0 : *QType = 0;
18892 0 : *b_min = FIX_MIN;
18893 0 : *b_max = FIX_MAX;
18894 0 : return 1;
18895 : case 28:
18896 0 : *AType = 0;
18897 0 : *QType = 0;
18898 0 : *b_min = FIX_MIN;
18899 0 : *b_max = FIX_MAX;
18900 0 : return 1;
18901 : case 29:
18902 0 : *AType = 0;
18903 0 : *QType = 0;
18904 0 : *b_min = FIX_MIN;
18905 0 : *b_max = FIX_MAX;
18906 0 : return 1;
18907 : case 30:
18908 0 : *AType = 0;
18909 0 : *QType = 0;
18910 0 : *b_min = FIX_MIN;
18911 0 : *b_max = FIX_MAX;
18912 0 : return 1;
18913 : case 31:
18914 0 : *AType = 0;
18915 0 : *QType = 0;
18916 0 : *b_min = FIX_MIN;
18917 0 : *b_max = FIX_MAX;
18918 0 : return 1;
18919 : case 32:
18920 0 : *AType = 0;
18921 0 : *QType = 0;
18922 0 : *b_min = FIX_MIN;
18923 0 : *b_max = FIX_MAX;
18924 0 : return 1;
18925 : case 33:
18926 0 : *AType = 0;
18927 0 : *QType = 0;
18928 0 : *b_min = FIX_MIN;
18929 0 : *b_max = FIX_MAX;
18930 0 : return 1;
18931 : case 34:
18932 0 : *AType = 0;
18933 0 : *QType = 0;
18934 0 : *b_min = FIX_MIN;
18935 0 : *b_max = FIX_MAX;
18936 0 : return 1;
18937 : case 35:
18938 0 : *AType = 0;
18939 0 : *QType = 0;
18940 0 : *b_min = FIX_MIN;
18941 0 : *b_max = FIX_MAX;
18942 0 : return 1;
18943 : case 36:
18944 0 : *AType = 0;
18945 0 : *QType = 0;
18946 0 : *b_min = FIX_MIN;
18947 0 : *b_max = FIX_MAX;
18948 0 : return 1;
18949 : case 37:
18950 0 : *AType = 0;
18951 0 : *QType = 0;
18952 0 : *b_min = FIX_MIN;
18953 0 : *b_max = FIX_MAX;
18954 0 : return 1;
18955 : case 38:
18956 0 : *AType = 0;
18957 0 : *QType = 0;
18958 0 : *b_min = FIX_MIN;
18959 0 : *b_max = FIX_MAX;
18960 0 : return 1;
18961 : case 39:
18962 0 : *AType = 0;
18963 0 : *QType = 0;
18964 0 : *b_min = FIX_MIN;
18965 0 : *b_max = FIX_MAX;
18966 0 : return 1;
18967 : case 40:
18968 0 : *AType = 0;
18969 0 : *QType = 0;
18970 0 : *b_min = FIX_MIN;
18971 0 : *b_max = FIX_MAX;
18972 0 : return 1;
18973 : case 41:
18974 0 : *AType = 0;
18975 0 : *QType = 0;
18976 0 : *b_min = FIX_MIN;
18977 0 : *b_max = FIX_MAX;
18978 0 : return 1;
18979 : case 42:
18980 0 : *AType = 0;
18981 0 : *QType = 0;
18982 0 : *b_min = FIX_MIN;
18983 0 : *b_max = FIX_MAX;
18984 0 : return 1;
18985 : case 43:
18986 0 : *AType = 0;
18987 0 : *QType = 0;
18988 0 : *b_min = FIX_MIN;
18989 0 : *b_max = FIX_MAX;
18990 0 : return 1;
18991 : case 44:
18992 0 : *AType = 0;
18993 0 : *QType = 0;
18994 0 : *b_min = FIX_MIN;
18995 0 : *b_max = FIX_MAX;
18996 0 : return 1;
18997 : case 45:
18998 0 : *AType = 0;
18999 0 : *QType = 0;
19000 0 : *b_min = FIX_MIN;
19001 0 : *b_max = FIX_MAX;
19002 0 : return 1;
19003 : case 46:
19004 0 : *AType = 0;
19005 0 : *QType = 0;
19006 0 : *b_min = FIX_MIN;
19007 0 : *b_max = FIX_MAX;
19008 0 : return 1;
19009 : case 47:
19010 0 : *AType = 0;
19011 0 : *QType = 0;
19012 0 : *b_min = FIX_MIN;
19013 0 : *b_max = FIX_MAX;
19014 0 : return 1;
19015 : case 48:
19016 0 : *AType = 0;
19017 0 : *QType = 0;
19018 0 : *b_min = FIX_MIN;
19019 0 : *b_max = FIX_MAX;
19020 0 : return 1;
19021 : case 49:
19022 0 : *AType = 0;
19023 0 : *QType = 0;
19024 0 : *b_min = FIX_MIN;
19025 0 : *b_max = FIX_MAX;
19026 0 : return 1;
19027 : case 50:
19028 0 : *AType = 0;
19029 0 : *QType = 0;
19030 0 : *b_min = FIX_MIN;
19031 0 : *b_max = FIX_MAX;
19032 0 : return 1;
19033 : case 51:
19034 0 : *AType = 0;
19035 0 : *QType = 0;
19036 0 : *b_min = FIX_MIN;
19037 0 : *b_max = FIX_MAX;
19038 0 : return 1;
19039 : case 52:
19040 0 : *AType = 0;
19041 0 : *QType = 0;
19042 0 : *b_min = FIX_MIN;
19043 0 : *b_max = FIX_MAX;
19044 0 : return 1;
19045 : case 53:
19046 0 : *AType = 0;
19047 0 : *QType = 0;
19048 0 : *b_min = FIX_MIN;
19049 0 : *b_max = FIX_MAX;
19050 0 : return 1;
19051 : case 54:
19052 0 : *AType = 0;
19053 0 : *QType = 0;
19054 0 : *b_min = FIX_MIN;
19055 0 : *b_max = FIX_MAX;
19056 0 : return 1;
19057 : case 55:
19058 0 : *AType = 0;
19059 0 : *QType = 0;
19060 0 : *b_min = FIX_MIN;
19061 0 : *b_max = FIX_MAX;
19062 0 : return 1;
19063 : case 56:
19064 0 : *AType = 0;
19065 0 : *QType = 0;
19066 0 : *b_min = FIX_MIN;
19067 0 : *b_max = FIX_MAX;
19068 0 : return 1;
19069 : case 57:
19070 0 : *AType = 0;
19071 0 : *QType = 0;
19072 0 : *b_min = FIX_MIN;
19073 0 : *b_max = FIX_MAX;
19074 0 : return 1;
19075 : case 58:
19076 0 : *AType = 0;
19077 0 : *QType = 0;
19078 0 : *b_min = FIX_MIN;
19079 0 : *b_max = FIX_MAX;
19080 0 : return 1;
19081 : case 59:
19082 0 : *AType = 0;
19083 0 : *QType = 0;
19084 0 : *b_min = FIX_MIN;
19085 0 : *b_max = FIX_MAX;
19086 0 : return 1;
19087 : case 60:
19088 0 : *AType = 0;
19089 0 : *QType = 0;
19090 0 : *b_min = FIX_MIN;
19091 0 : *b_max = FIX_MAX;
19092 0 : return 1;
19093 : case 61:
19094 0 : *AType = 0;
19095 0 : *QType = 0;
19096 0 : *b_min = FIX_MIN;
19097 0 : *b_max = FIX_MAX;
19098 0 : return 1;
19099 : case 62:
19100 0 : *AType = 0;
19101 0 : *QType = 0;
19102 0 : *b_min = FIX_MIN;
19103 0 : *b_max = FIX_MAX;
19104 0 : return 1;
19105 : case 63:
19106 0 : *AType = 0;
19107 0 : *QType = 0;
19108 0 : *b_min = FIX_MIN;
19109 0 : *b_max = FIX_MAX;
19110 0 : return 1;
19111 : case 64:
19112 0 : *AType = 0;
19113 0 : *QType = 0;
19114 0 : *b_min = FIX_MIN;
19115 0 : *b_max = FIX_MAX;
19116 0 : return 1;
19117 : case 65:
19118 0 : *AType = 0;
19119 0 : *QType = 0;
19120 0 : *b_min = FIX_MIN;
19121 0 : *b_max = FIX_MAX;
19122 0 : return 1;
19123 : case 66:
19124 0 : *AType = 0;
19125 0 : *QType = 0;
19126 0 : *b_min = FIX_MIN;
19127 0 : *b_max = FIX_MAX;
19128 0 : return 1;
19129 : case 67:
19130 0 : *AType = 0;
19131 0 : *QType = 0;
19132 0 : *b_min = FIX_MIN;
19133 0 : *b_max = FIX_MAX;
19134 0 : return 1;
19135 : case 68:
19136 0 : *AType = 0;
19137 0 : *QType = 0;
19138 0 : *b_min = FIX_MIN;
19139 0 : *b_max = FIX_MAX;
19140 0 : return 1;
19141 : case 69:
19142 0 : *AType = 0;
19143 0 : *QType = 0;
19144 0 : *b_min = FIX_MIN;
19145 0 : *b_max = FIX_MAX;
19146 0 : return 1;
19147 : case 70:
19148 0 : *AType = 0;
19149 0 : *QType = 0;
19150 0 : *b_min = FIX_MIN;
19151 0 : *b_max = FIX_MAX;
19152 0 : return 1;
19153 : case 71:
19154 0 : *AType = 0;
19155 0 : *QType = 0;
19156 0 : *b_min = FIX_MIN;
19157 0 : *b_max = FIX_MAX;
19158 0 : return 1;
19159 : case 72:
19160 0 : *AType = 0;
19161 0 : *QType = 0;
19162 0 : *b_min = FIX_MIN;
19163 0 : *b_max = FIX_MAX;
19164 0 : return 1;
19165 : case 73:
19166 0 : *AType = 0;
19167 0 : *QType = 0;
19168 0 : *b_min = FIX_MIN;
19169 0 : *b_max = FIX_MAX;
19170 0 : return 1;
19171 : case 74:
19172 0 : *AType = 0;
19173 0 : *QType = 0;
19174 0 : *b_min = FIX_MIN;
19175 0 : *b_max = FIX_MAX;
19176 0 : return 1;
19177 : case 75:
19178 0 : *AType = 0;
19179 0 : *QType = 0;
19180 0 : *b_min = FIX_MIN;
19181 0 : *b_max = FIX_MAX;
19182 0 : return 1;
19183 : case 76:
19184 0 : *AType = 0;
19185 0 : *QType = 0;
19186 0 : *b_min = FIX_MIN;
19187 0 : *b_max = FIX_MAX;
19188 0 : return 1;
19189 : case 77:
19190 0 : *AType = 0;
19191 0 : *QType = 0;
19192 0 : *b_min = FIX_MIN;
19193 0 : *b_max = FIX_MAX;
19194 0 : return 1;
19195 : case 78:
19196 0 : *AType = 0;
19197 0 : *QType = 0;
19198 0 : *b_min = FIX_MIN;
19199 0 : *b_max = FIX_MAX;
19200 0 : return 1;
19201 : case 79:
19202 0 : *AType = 0;
19203 0 : *QType = 0;
19204 0 : *b_min = FIX_MIN;
19205 0 : *b_max = FIX_MAX;
19206 0 : return 1;
19207 : case 80:
19208 0 : *AType = 0;
19209 0 : *QType = 0;
19210 0 : *b_min = FIX_MIN;
19211 0 : *b_max = FIX_MAX;
19212 0 : return 1;
19213 : case 81:
19214 0 : *AType = 0;
19215 0 : *QType = 0;
19216 0 : *b_min = FIX_MIN;
19217 0 : *b_max = FIX_MAX;
19218 0 : return 1;
19219 : case 82:
19220 0 : *AType = 0;
19221 0 : *QType = 0;
19222 0 : *b_min = FIX_MIN;
19223 0 : *b_max = FIX_MAX;
19224 0 : return 1;
19225 : case 83:
19226 0 : *AType = 0;
19227 0 : *QType = 0;
19228 0 : *b_min = FIX_MIN;
19229 0 : *b_max = FIX_MAX;
19230 0 : return 1;
19231 : case 84:
19232 0 : *AType = 0;
19233 0 : *QType = 0;
19234 0 : *b_min = FIX_MIN;
19235 0 : *b_max = FIX_MAX;
19236 0 : return 1;
19237 : case 85:
19238 0 : *AType = 0;
19239 0 : *QType = 0;
19240 0 : *b_min = FIX_MIN;
19241 0 : *b_max = FIX_MAX;
19242 0 : return 1;
19243 : case 86:
19244 0 : *AType = 0;
19245 0 : *QType = 0;
19246 0 : *b_min = FIX_MIN;
19247 0 : *b_max = FIX_MAX;
19248 0 : return 1;
19249 : case 87:
19250 0 : *AType = 0;
19251 0 : *QType = 0;
19252 0 : *b_min = FIX_MIN;
19253 0 : *b_max = FIX_MAX;
19254 0 : return 1;
19255 : case 88:
19256 0 : *AType = 0;
19257 0 : *QType = 0;
19258 0 : *b_min = FIX_MIN;
19259 0 : *b_max = FIX_MAX;
19260 0 : return 1;
19261 : case 89:
19262 0 : *AType = 0;
19263 0 : *QType = 0;
19264 0 : *b_min = FIX_MIN;
19265 0 : *b_max = FIX_MAX;
19266 0 : return 1;
19267 : case 90:
19268 0 : *AType = 0;
19269 0 : *QType = 0;
19270 0 : *b_min = FIX_MIN;
19271 0 : *b_max = FIX_MAX;
19272 0 : return 1;
19273 : case 91:
19274 0 : *AType = 0;
19275 0 : *QType = 0;
19276 0 : *b_min = FIX_MIN;
19277 0 : *b_max = FIX_MAX;
19278 0 : return 1;
19279 : case 92:
19280 0 : *AType = 0;
19281 0 : *QType = 0;
19282 0 : *b_min = FIX_MIN;
19283 0 : *b_max = FIX_MAX;
19284 0 : return 1;
19285 : case 93:
19286 0 : *AType = 0;
19287 0 : *QType = 0;
19288 0 : *b_min = FIX_MIN;
19289 0 : *b_max = FIX_MAX;
19290 0 : return 1;
19291 : case 94:
19292 0 : *AType = 0;
19293 0 : *QType = 0;
19294 0 : *b_min = FIX_MIN;
19295 0 : *b_max = FIX_MAX;
19296 0 : return 1;
19297 : case 95:
19298 0 : *AType = 0;
19299 0 : *QType = 0;
19300 0 : *b_min = FIX_MIN;
19301 0 : *b_max = FIX_MAX;
19302 0 : return 1;
19303 : case 96:
19304 0 : *AType = 0;
19305 0 : *QType = 0;
19306 0 : *b_min = FIX_MIN;
19307 0 : *b_max = FIX_MAX;
19308 0 : return 1;
19309 : case 97:
19310 0 : *AType = 0;
19311 0 : *QType = 0;
19312 0 : *b_min = FIX_MIN;
19313 0 : *b_max = FIX_MAX;
19314 0 : return 1;
19315 : case 98:
19316 0 : *AType = 0;
19317 0 : *QType = 0;
19318 0 : *b_min = FIX_MIN;
19319 0 : *b_max = FIX_MAX;
19320 0 : return 1;
19321 : case 99:
19322 0 : *AType = 0;
19323 0 : *QType = 0;
19324 0 : *b_min = FIX_MIN;
19325 0 : *b_max = FIX_MAX;
19326 0 : return 1;
19327 : case 100:
19328 0 : *AType = 0;
19329 0 : *QType = 0;
19330 0 : *b_min = FIX_MIN;
19331 0 : *b_max = FIX_MAX;
19332 0 : return 1;
19333 : case 101:
19334 0 : *AType = 0;
19335 0 : *QType = 0;
19336 0 : *b_min = FIX_MIN;
19337 0 : *b_max = FIX_MAX;
19338 0 : return 1;
19339 : case 102:
19340 0 : *AType = 0;
19341 0 : *QType = 0;
19342 0 : *b_min = FIX_MIN;
19343 0 : *b_max = FIX_MAX;
19344 0 : return 1;
19345 : case 103:
19346 0 : *AType = 0;
19347 0 : *QType = 0;
19348 0 : *b_min = FIX_MIN;
19349 0 : *b_max = FIX_MAX;
19350 0 : return 1;
19351 : case 104:
19352 0 : *AType = 0;
19353 0 : *QType = 0;
19354 0 : *b_min = FIX_MIN;
19355 0 : *b_max = FIX_MAX;
19356 0 : return 1;
19357 : case 105:
19358 0 : *AType = 0;
19359 0 : *QType = 0;
19360 0 : *b_min = FIX_MIN;
19361 0 : *b_max = FIX_MAX;
19362 0 : return 1;
19363 : case 106:
19364 0 : *AType = 0;
19365 0 : *QType = 0;
19366 0 : *b_min = FIX_MIN;
19367 0 : *b_max = FIX_MAX;
19368 0 : return 1;
19369 : case 107:
19370 0 : *AType = 0;
19371 0 : *QType = 0;
19372 0 : *b_min = FIX_MIN;
19373 0 : *b_max = FIX_MAX;
19374 0 : return 1;
19375 : case 108:
19376 0 : *AType = 0;
19377 0 : *QType = 0;
19378 0 : *b_min = FIX_MIN;
19379 0 : *b_max = FIX_MAX;
19380 0 : return 1;
19381 : case 109:
19382 0 : *AType = 0;
19383 0 : *QType = 0;
19384 0 : *b_min = FIX_MIN;
19385 0 : *b_max = FIX_MAX;
19386 0 : return 1;
19387 : case 110:
19388 0 : *AType = 0;
19389 0 : *QType = 0;
19390 0 : *b_min = FIX_MIN;
19391 0 : *b_max = FIX_MAX;
19392 0 : return 1;
19393 : case 111:
19394 0 : *AType = 0;
19395 0 : *QType = 0;
19396 0 : *b_min = FIX_MIN;
19397 0 : *b_max = FIX_MAX;
19398 0 : return 1;
19399 : case 112:
19400 0 : *AType = 0;
19401 0 : *QType = 0;
19402 0 : *b_min = FIX_MIN;
19403 0 : *b_max = FIX_MAX;
19404 0 : return 1;
19405 : case 113:
19406 0 : *AType = 0;
19407 0 : *QType = 0;
19408 0 : *b_min = FIX_MIN;
19409 0 : *b_max = FIX_MAX;
19410 0 : return 1;
19411 : case 114:
19412 0 : *AType = 0;
19413 0 : *QType = 0;
19414 0 : *b_min = FIX_MIN;
19415 0 : *b_max = FIX_MAX;
19416 0 : return 1;
19417 : case 115:
19418 0 : *AType = 0;
19419 0 : *QType = 0;
19420 0 : *b_min = FIX_MIN;
19421 0 : *b_max = FIX_MAX;
19422 0 : return 1;
19423 : case 116:
19424 0 : *AType = 0;
19425 0 : *QType = 0;
19426 0 : *b_min = FIX_MIN;
19427 0 : *b_max = FIX_MAX;
19428 0 : return 1;
19429 : case 117:
19430 0 : *AType = 0;
19431 0 : *QType = 0;
19432 0 : *b_min = FIX_MIN;
19433 0 : *b_max = FIX_MAX;
19434 0 : return 1;
19435 : case 118:
19436 0 : *AType = 0;
19437 0 : *QType = 0;
19438 0 : *b_min = FIX_MIN;
19439 0 : *b_max = FIX_MAX;
19440 0 : return 1;
19441 : case 119:
19442 0 : *AType = 0;
19443 0 : *QType = 0;
19444 0 : *b_min = FIX_MIN;
19445 0 : *b_max = FIX_MAX;
19446 0 : return 1;
19447 : case 120:
19448 0 : *AType = 0;
19449 0 : *QType = 0;
19450 0 : *b_min = FIX_MIN;
19451 0 : *b_max = FIX_MAX;
19452 0 : return 1;
19453 : case 121:
19454 0 : *AType = 0;
19455 0 : *QType = 0;
19456 0 : *b_min = FIX_MIN;
19457 0 : *b_max = FIX_MAX;
19458 0 : return 1;
19459 : case 122:
19460 0 : *AType = 0;
19461 0 : *QType = 0;
19462 0 : *b_min = FIX_MIN;
19463 0 : *b_max = FIX_MAX;
19464 0 : return 1;
19465 : case 123:
19466 0 : *AType = 0;
19467 0 : *QType = 0;
19468 0 : *b_min = FIX_MIN;
19469 0 : *b_max = FIX_MAX;
19470 0 : return 1;
19471 : case 124:
19472 0 : *AType = 0;
19473 0 : *QType = 0;
19474 0 : *b_min = FIX_MIN;
19475 0 : *b_max = FIX_MAX;
19476 0 : return 1;
19477 : case 125:
19478 0 : *AType = 0;
19479 0 : *QType = 0;
19480 0 : *b_min = FIX_MIN;
19481 0 : *b_max = FIX_MAX;
19482 0 : return 1;
19483 : case 126:
19484 0 : *AType = 0;
19485 0 : *QType = 0;
19486 0 : *b_min = FIX_MIN;
19487 0 : *b_max = FIX_MAX;
19488 0 : return 1;
19489 : case 127:
19490 0 : *AType = 0;
19491 0 : *QType = 0;
19492 0 : *b_min = FIX_MIN;
19493 0 : *b_max = FIX_MAX;
19494 0 : return 1;
19495 : case 128:
19496 0 : *AType = 0;
19497 0 : *QType = 0;
19498 0 : *b_min = FIX_MIN;
19499 0 : *b_max = FIX_MAX;
19500 0 : return 1;
19501 : case 129:
19502 0 : *AType = 0;
19503 0 : *QType = 0;
19504 0 : *b_min = FIX_MIN;
19505 0 : *b_max = FIX_MAX;
19506 0 : return 1;
19507 : case 130:
19508 0 : *AType = 0;
19509 0 : *QType = 0;
19510 0 : *b_min = FIX_MIN;
19511 0 : *b_max = FIX_MAX;
19512 0 : return 1;
19513 : case 131:
19514 0 : *AType = 0;
19515 0 : *QType = 0;
19516 0 : *b_min = FIX_MIN;
19517 0 : *b_max = FIX_MAX;
19518 0 : return 1;
19519 : case 132:
19520 0 : *AType = 0;
19521 0 : *QType = 0;
19522 0 : *b_min = FIX_MIN;
19523 0 : *b_max = FIX_MAX;
19524 0 : return 1;
19525 : case 133:
19526 0 : *AType = 0;
19527 0 : *QType = 0;
19528 0 : *b_min = FIX_MIN;
19529 0 : *b_max = FIX_MAX;
19530 0 : return 1;
19531 : case 134:
19532 0 : *AType = 0;
19533 0 : *QType = 0;
19534 0 : *b_min = FIX_MIN;
19535 0 : *b_max = FIX_MAX;
19536 0 : return 1;
19537 : case 135:
19538 0 : *AType = 0;
19539 0 : *QType = 0;
19540 0 : *b_min = FIX_MIN;
19541 0 : *b_max = FIX_MAX;
19542 0 : return 1;
19543 : case 136:
19544 0 : *AType = 0;
19545 0 : *QType = 0;
19546 0 : *b_min = FIX_MIN;
19547 0 : *b_max = FIX_MAX;
19548 0 : return 1;
19549 : case 137:
19550 0 : *AType = 0;
19551 0 : *QType = 0;
19552 0 : *b_min = FIX_MIN;
19553 0 : *b_max = FIX_MAX;
19554 0 : return 1;
19555 : case 138:
19556 0 : *AType = 0;
19557 0 : *QType = 0;
19558 0 : *b_min = FIX_MIN;
19559 0 : *b_max = FIX_MAX;
19560 0 : return 1;
19561 : case 139:
19562 0 : *AType = 0;
19563 0 : *QType = 0;
19564 0 : *b_min = FIX_MIN;
19565 0 : *b_max = FIX_MAX;
19566 0 : return 1;
19567 : case 140:
19568 0 : *AType = 0;
19569 0 : *QType = 0;
19570 0 : *b_min = FIX_MIN;
19571 0 : *b_max = FIX_MAX;
19572 0 : return 1;
19573 : case 141:
19574 0 : *AType = 0;
19575 0 : *QType = 0;
19576 0 : *b_min = FIX_MIN;
19577 0 : *b_max = FIX_MAX;
19578 0 : return 1;
19579 : case 142:
19580 0 : *AType = 0;
19581 0 : *QType = 0;
19582 0 : *b_min = FIX_MIN;
19583 0 : *b_max = FIX_MAX;
19584 0 : return 1;
19585 : case 143:
19586 0 : *AType = 0;
19587 0 : *QType = 0;
19588 0 : *b_min = FIX_MIN;
19589 0 : *b_max = FIX_MAX;
19590 0 : return 1;
19591 : case 144:
19592 0 : *AType = 0;
19593 0 : *QType = 0;
19594 0 : *b_min = FIX_MIN;
19595 0 : *b_max = FIX_MAX;
19596 0 : return 1;
19597 : case 145:
19598 0 : *AType = 0;
19599 0 : *QType = 0;
19600 0 : *b_min = FIX_MIN;
19601 0 : *b_max = FIX_MAX;
19602 0 : return 1;
19603 : case 146:
19604 0 : *AType = 0;
19605 0 : *QType = 0;
19606 0 : *b_min = FIX_MIN;
19607 0 : *b_max = FIX_MAX;
19608 0 : return 1;
19609 : case 147:
19610 0 : *AType = 0;
19611 0 : *QType = 0;
19612 0 : *b_min = FIX_MIN;
19613 0 : *b_max = FIX_MAX;
19614 0 : return 1;
19615 : case 148:
19616 0 : *AType = 0;
19617 0 : *QType = 0;
19618 0 : *b_min = FIX_MIN;
19619 0 : *b_max = FIX_MAX;
19620 0 : return 1;
19621 : case 149:
19622 0 : *AType = 0;
19623 0 : *QType = 0;
19624 0 : *b_min = FIX_MIN;
19625 0 : *b_max = FIX_MAX;
19626 0 : return 1;
19627 : case 150:
19628 0 : *AType = 0;
19629 0 : *QType = 0;
19630 0 : *b_min = FIX_MIN;
19631 0 : *b_max = FIX_MAX;
19632 0 : return 1;
19633 : case 151:
19634 0 : *AType = 0;
19635 0 : *QType = 0;
19636 0 : *b_min = FIX_MIN;
19637 0 : *b_max = FIX_MAX;
19638 0 : return 1;
19639 : case 152:
19640 0 : *AType = 0;
19641 0 : *QType = 0;
19642 0 : *b_min = FIX_MIN;
19643 0 : *b_max = FIX_MAX;
19644 0 : return 1;
19645 : case 153:
19646 0 : *AType = 0;
19647 0 : *QType = 0;
19648 0 : *b_min = FIX_MIN;
19649 0 : *b_max = FIX_MAX;
19650 0 : return 1;
19651 : case 154:
19652 0 : *AType = 0;
19653 0 : *QType = 0;
19654 0 : *b_min = FIX_MIN;
19655 0 : *b_max = FIX_MAX;
19656 0 : return 1;
19657 : case 155:
19658 0 : *AType = 0;
19659 0 : *QType = 0;
19660 0 : *b_min = FIX_MIN;
19661 0 : *b_max = FIX_MAX;
19662 0 : return 1;
19663 : case 156:
19664 0 : *AType = 0;
19665 0 : *QType = 0;
19666 0 : *b_min = FIX_MIN;
19667 0 : *b_max = FIX_MAX;
19668 0 : return 1;
19669 : case 157:
19670 0 : *AType = 0;
19671 0 : *QType = 0;
19672 0 : *b_min = FIX_MIN;
19673 0 : *b_max = FIX_MAX;
19674 0 : return 1;
19675 : case 158:
19676 0 : *AType = 0;
19677 0 : *QType = 0;
19678 0 : *b_min = FIX_MIN;
19679 0 : *b_max = FIX_MAX;
19680 0 : return 1;
19681 : case 159:
19682 0 : *AType = 0;
19683 0 : *QType = 0;
19684 0 : *b_min = FIX_MIN;
19685 0 : *b_max = FIX_MAX;
19686 0 : return 1;
19687 : case 160:
19688 0 : *AType = 0;
19689 0 : *QType = 0;
19690 0 : *b_min = FIX_MIN;
19691 0 : *b_max = FIX_MAX;
19692 0 : return 1;
19693 : case 161:
19694 0 : *AType = 0;
19695 0 : *QType = 0;
19696 0 : *b_min = FIX_MIN;
19697 0 : *b_max = FIX_MAX;
19698 0 : return 1;
19699 : case 162:
19700 0 : *AType = 0;
19701 0 : *QType = 0;
19702 0 : *b_min = FIX_MIN;
19703 0 : *b_max = FIX_MAX;
19704 0 : return 1;
19705 : case 163:
19706 0 : *AType = 0;
19707 0 : *QType = 0;
19708 0 : *b_min = FIX_MIN;
19709 0 : *b_max = FIX_MAX;
19710 0 : return 1;
19711 : case 164:
19712 0 : *AType = 0;
19713 0 : *QType = 0;
19714 0 : *b_min = FIX_MIN;
19715 0 : *b_max = FIX_MAX;
19716 0 : return 1;
19717 : case 165:
19718 0 : *AType = 0;
19719 0 : *QType = 0;
19720 0 : *b_min = FIX_MIN;
19721 0 : *b_max = FIX_MAX;
19722 0 : return 1;
19723 : case 166:
19724 0 : *AType = 0;
19725 0 : *QType = 0;
19726 0 : *b_min = FIX_MIN;
19727 0 : *b_max = FIX_MAX;
19728 0 : return 1;
19729 : case 167:
19730 0 : *AType = 0;
19731 0 : *QType = 0;
19732 0 : *b_min = FIX_MIN;
19733 0 : *b_max = FIX_MAX;
19734 0 : return 1;
19735 : case 168:
19736 0 : *AType = 0;
19737 0 : *QType = 0;
19738 0 : *b_min = FIX_MIN;
19739 0 : *b_max = FIX_MAX;
19740 0 : return 1;
19741 : case 169:
19742 0 : *AType = 0;
19743 0 : *QType = 0;
19744 0 : *b_min = FIX_MIN;
19745 0 : *b_max = FIX_MAX;
19746 0 : return 1;
19747 : case 170:
19748 0 : *AType = 0;
19749 0 : *QType = 0;
19750 0 : *b_min = FIX_MIN;
19751 0 : *b_max = FIX_MAX;
19752 0 : return 1;
19753 : case 171:
19754 0 : *AType = 0;
19755 0 : *QType = 0;
19756 0 : *b_min = FIX_MIN;
19757 0 : *b_max = FIX_MAX;
19758 0 : return 1;
19759 : case 172:
19760 0 : *AType = 0;
19761 0 : *QType = 0;
19762 0 : *b_min = FIX_MIN;
19763 0 : *b_max = FIX_MAX;
19764 0 : return 1;
19765 : case 173:
19766 0 : *AType = 0;
19767 0 : *QType = 0;
19768 0 : *b_min = FIX_MIN;
19769 0 : *b_max = FIX_MAX;
19770 0 : return 1;
19771 : case 174:
19772 0 : *AType = 0;
19773 0 : *QType = 0;
19774 0 : *b_min = FIX_MIN;
19775 0 : *b_max = FIX_MAX;
19776 0 : return 1;
19777 : case 175:
19778 0 : *AType = 0;
19779 0 : *QType = 0;
19780 0 : *b_min = FIX_MIN;
19781 0 : *b_max = FIX_MAX;
19782 0 : return 1;
19783 : case 176:
19784 0 : *AType = 0;
19785 0 : *QType = 0;
19786 0 : *b_min = FIX_MIN;
19787 0 : *b_max = FIX_MAX;
19788 0 : return 1;
19789 : case 177:
19790 0 : *AType = 0;
19791 0 : *QType = 0;
19792 0 : *b_min = FIX_MIN;
19793 0 : *b_max = FIX_MAX;
19794 0 : return 1;
19795 : case 178:
19796 0 : *AType = 0;
19797 0 : *QType = 0;
19798 0 : *b_min = FIX_MIN;
19799 0 : *b_max = FIX_MAX;
19800 0 : return 1;
19801 : case 179:
19802 0 : *AType = 0;
19803 0 : *QType = 0;
19804 0 : *b_min = FIX_MIN;
19805 0 : *b_max = FIX_MAX;
19806 0 : return 1;
19807 : case 180:
19808 0 : *AType = 0;
19809 0 : *QType = 0;
19810 0 : *b_min = FIX_MIN;
19811 0 : *b_max = FIX_MAX;
19812 0 : return 1;
19813 : case 181:
19814 0 : *AType = 0;
19815 0 : *QType = 0;
19816 0 : *b_min = FIX_MIN;
19817 0 : *b_max = FIX_MAX;
19818 0 : return 1;
19819 : case 182:
19820 0 : *AType = 0;
19821 0 : *QType = 0;
19822 0 : *b_min = FIX_MIN;
19823 0 : *b_max = FIX_MAX;
19824 0 : return 1;
19825 : case 183:
19826 0 : *AType = 0;
19827 0 : *QType = 0;
19828 0 : *b_min = FIX_MIN;
19829 0 : *b_max = FIX_MAX;
19830 0 : return 1;
19831 : case 184:
19832 0 : *AType = 0;
19833 0 : *QType = 0;
19834 0 : *b_min = FIX_MIN;
19835 0 : *b_max = FIX_MAX;
19836 0 : return 1;
19837 : case 185:
19838 0 : *AType = 0;
19839 0 : *QType = 0;
19840 0 : *b_min = FIX_MIN;
19841 0 : *b_max = FIX_MAX;
19842 0 : return 1;
19843 : case 186:
19844 0 : *AType = 0;
19845 0 : *QType = 0;
19846 0 : *b_min = FIX_MIN;
19847 0 : *b_max = FIX_MAX;
19848 0 : return 1;
19849 : case 187:
19850 0 : *AType = 0;
19851 0 : *QType = 0;
19852 0 : *b_min = FIX_MIN;
19853 0 : *b_max = FIX_MAX;
19854 0 : return 1;
19855 : case 188:
19856 0 : *AType = 0;
19857 0 : *QType = 0;
19858 0 : *b_min = FIX_MIN;
19859 0 : *b_max = FIX_MAX;
19860 0 : return 1;
19861 : case 189:
19862 0 : *AType = 0;
19863 0 : *QType = 0;
19864 0 : *b_min = FIX_MIN;
19865 0 : *b_max = FIX_MAX;
19866 0 : return 1;
19867 : case 190:
19868 0 : *AType = 0;
19869 0 : *QType = 0;
19870 0 : *b_min = FIX_MIN;
19871 0 : *b_max = FIX_MAX;
19872 0 : return 1;
19873 : case 191:
19874 0 : *AType = 0;
19875 0 : *QType = 0;
19876 0 : *b_min = FIX_MIN;
19877 0 : *b_max = FIX_MAX;
19878 0 : return 1;
19879 : case 192:
19880 0 : *AType = 0;
19881 0 : *QType = 0;
19882 0 : *b_min = FIX_MIN;
19883 0 : *b_max = FIX_MAX;
19884 0 : return 1;
19885 : case 193:
19886 0 : *AType = 0;
19887 0 : *QType = 0;
19888 0 : *b_min = FIX_MIN;
19889 0 : *b_max = FIX_MAX;
19890 0 : return 1;
19891 : case 194:
19892 0 : *AType = 0;
19893 0 : *QType = 0;
19894 0 : *b_min = FIX_MIN;
19895 0 : *b_max = FIX_MAX;
19896 0 : return 1;
19897 : case 195:
19898 0 : *AType = 0;
19899 0 : *QType = 0;
19900 0 : *b_min = FIX_MIN;
19901 0 : *b_max = FIX_MAX;
19902 0 : return 1;
19903 : case 196:
19904 0 : *AType = 0;
19905 0 : *QType = 0;
19906 0 : *b_min = FIX_MIN;
19907 0 : *b_max = FIX_MAX;
19908 0 : return 1;
19909 : case 197:
19910 0 : *AType = 0;
19911 0 : *QType = 0;
19912 0 : *b_min = FIX_MIN;
19913 0 : *b_max = FIX_MAX;
19914 0 : return 1;
19915 : case 198:
19916 0 : *AType = 0;
19917 0 : *QType = 0;
19918 0 : *b_min = FIX_MIN;
19919 0 : *b_max = FIX_MAX;
19920 0 : return 1;
19921 : case 199:
19922 0 : *AType = 0;
19923 0 : *QType = 0;
19924 0 : *b_min = FIX_MIN;
19925 0 : *b_max = FIX_MAX;
19926 0 : return 1;
19927 : case 200:
19928 0 : *AType = 0;
19929 0 : *QType = 0;
19930 0 : *b_min = FIX_MIN;
19931 0 : *b_max = FIX_MAX;
19932 0 : return 1;
19933 : case 201:
19934 0 : *AType = 0;
19935 0 : *QType = 0;
19936 0 : *b_min = FIX_MIN;
19937 0 : *b_max = FIX_MAX;
19938 0 : return 1;
19939 : case 202:
19940 0 : *AType = 0;
19941 0 : *QType = 0;
19942 0 : *b_min = FIX_MIN;
19943 0 : *b_max = FIX_MAX;
19944 0 : return 1;
19945 : case 203:
19946 0 : *AType = 0;
19947 0 : *QType = 0;
19948 0 : *b_min = FIX_MIN;
19949 0 : *b_max = FIX_MAX;
19950 0 : return 1;
19951 : case 204:
19952 0 : *AType = 0;
19953 0 : *QType = 0;
19954 0 : *b_min = FIX_MIN;
19955 0 : *b_max = FIX_MAX;
19956 0 : return 1;
19957 : case 205:
19958 0 : *AType = 0;
19959 0 : *QType = 0;
19960 0 : *b_min = FIX_MIN;
19961 0 : *b_max = FIX_MAX;
19962 0 : return 1;
19963 : case 206:
19964 0 : *AType = 0;
19965 0 : *QType = 0;
19966 0 : *b_min = FIX_MIN;
19967 0 : *b_max = FIX_MAX;
19968 0 : return 1;
19969 : case 207:
19970 0 : *AType = 0;
19971 0 : *QType = 0;
19972 0 : *b_min = FIX_MIN;
19973 0 : *b_max = FIX_MAX;
19974 0 : return 1;
19975 : case 208:
19976 0 : *AType = 0;
19977 0 : *QType = 0;
19978 0 : *b_min = FIX_MIN;
19979 0 : *b_max = FIX_MAX;
19980 0 : return 1;
19981 : case 209:
19982 0 : *AType = 0;
19983 0 : *QType = 0;
19984 0 : *b_min = FIX_MIN;
19985 0 : *b_max = FIX_MAX;
19986 0 : return 1;
19987 : case 210:
19988 0 : *AType = 0;
19989 0 : *QType = 0;
19990 0 : *b_min = FIX_MIN;
19991 0 : *b_max = FIX_MAX;
19992 0 : return 1;
19993 : case 211:
19994 0 : *AType = 0;
19995 0 : *QType = 0;
19996 0 : *b_min = FIX_MIN;
19997 0 : *b_max = FIX_MAX;
19998 0 : return 1;
19999 : case 212:
20000 0 : *AType = 0;
20001 0 : *QType = 0;
20002 0 : *b_min = FIX_MIN;
20003 0 : *b_max = FIX_MAX;
20004 0 : return 1;
20005 : case 213:
20006 0 : *AType = 0;
20007 0 : *QType = 0;
20008 0 : *b_min = FIX_MIN;
20009 0 : *b_max = FIX_MAX;
20010 0 : return 1;
20011 : case 214:
20012 0 : *AType = 0;
20013 0 : *QType = 0;
20014 0 : *b_min = FIX_MIN;
20015 0 : *b_max = FIX_MAX;
20016 0 : return 1;
20017 : case 215:
20018 0 : *AType = 0;
20019 0 : *QType = 0;
20020 0 : *b_min = FIX_MIN;
20021 0 : *b_max = FIX_MAX;
20022 0 : return 1;
20023 : case 216:
20024 0 : *AType = 0;
20025 0 : *QType = 0;
20026 0 : *b_min = FIX_MIN;
20027 0 : *b_max = FIX_MAX;
20028 0 : return 1;
20029 : case 217:
20030 0 : *AType = 0;
20031 0 : *QType = 0;
20032 0 : *b_min = FIX_MIN;
20033 0 : *b_max = FIX_MAX;
20034 0 : return 1;
20035 : case 218:
20036 0 : *AType = 0;
20037 0 : *QType = 0;
20038 0 : *b_min = FIX_MIN;
20039 0 : *b_max = FIX_MAX;
20040 0 : return 1;
20041 : case 219:
20042 0 : *AType = 0;
20043 0 : *QType = 0;
20044 0 : *b_min = FIX_MIN;
20045 0 : *b_max = FIX_MAX;
20046 0 : return 1;
20047 : case 220:
20048 0 : *AType = 0;
20049 0 : *QType = 0;
20050 0 : *b_min = FIX_MIN;
20051 0 : *b_max = FIX_MAX;
20052 0 : return 1;
20053 : case 221:
20054 0 : *AType = 0;
20055 0 : *QType = 0;
20056 0 : *b_min = FIX_MIN;
20057 0 : *b_max = FIX_MAX;
20058 0 : return 1;
20059 : case 222:
20060 0 : *AType = 0;
20061 0 : *QType = 0;
20062 0 : *b_min = FIX_MIN;
20063 0 : *b_max = FIX_MAX;
20064 0 : return 1;
20065 : case 223:
20066 0 : *AType = 0;
20067 0 : *QType = 0;
20068 0 : *b_min = FIX_MIN;
20069 0 : *b_max = FIX_MAX;
20070 0 : return 1;
20071 : case 224:
20072 0 : *AType = 0;
20073 0 : *QType = 0;
20074 0 : *b_min = FIX_MIN;
20075 0 : *b_max = FIX_MAX;
20076 0 : return 1;
20077 : case 225:
20078 0 : *AType = 0;
20079 0 : *QType = 0;
20080 0 : *b_min = FIX_MIN;
20081 0 : *b_max = FIX_MAX;
20082 0 : return 1;
20083 : case 226:
20084 0 : *AType = 0;
20085 0 : *QType = 0;
20086 0 : *b_min = FIX_MIN;
20087 0 : *b_max = FIX_MAX;
20088 0 : return 1;
20089 : case 227:
20090 0 : *AType = 0;
20091 0 : *QType = 0;
20092 0 : *b_min = FIX_MIN;
20093 0 : *b_max = FIX_MAX;
20094 0 : return 1;
20095 : case 228:
20096 0 : *AType = 0;
20097 0 : *QType = 0;
20098 0 : *b_min = FIX_MIN;
20099 0 : *b_max = FIX_MAX;
20100 0 : return 1;
20101 : case 229:
20102 0 : *AType = 0;
20103 0 : *QType = 0;
20104 0 : *b_min = FIX_MIN;
20105 0 : *b_max = FIX_MAX;
20106 0 : return 1;
20107 : case 230:
20108 0 : *AType = 0;
20109 0 : *QType = 0;
20110 0 : *b_min = FIX_MIN;
20111 0 : *b_max = FIX_MAX;
20112 0 : return 1;
20113 : case 231:
20114 0 : *AType = 0;
20115 0 : *QType = 0;
20116 0 : *b_min = FIX_MIN;
20117 0 : *b_max = FIX_MAX;
20118 0 : return 1;
20119 : case 232:
20120 0 : *AType = 0;
20121 0 : *QType = 0;
20122 0 : *b_min = FIX_MIN;
20123 0 : *b_max = FIX_MAX;
20124 0 : return 1;
20125 : case 233:
20126 0 : *AType = 0;
20127 0 : *QType = 0;
20128 0 : *b_min = FIX_MIN;
20129 0 : *b_max = FIX_MAX;
20130 0 : return 1;
20131 : case 234:
20132 0 : *AType = 0;
20133 0 : *QType = 0;
20134 0 : *b_min = FIX_MIN;
20135 0 : *b_max = FIX_MAX;
20136 0 : return 1;
20137 : case 235:
20138 0 : *AType = 0;
20139 0 : *QType = 0;
20140 0 : *b_min = FIX_MIN;
20141 0 : *b_max = FIX_MAX;
20142 0 : return 1;
20143 : case 236:
20144 0 : *AType = 0;
20145 0 : *QType = 0;
20146 0 : *b_min = FIX_MIN;
20147 0 : *b_max = FIX_MAX;
20148 0 : return 1;
20149 : case 237:
20150 0 : *AType = 0;
20151 0 : *QType = 0;
20152 0 : *b_min = FIX_MIN;
20153 0 : *b_max = FIX_MAX;
20154 0 : return 1;
20155 : case 238:
20156 0 : *AType = 0;
20157 0 : *QType = 0;
20158 0 : *b_min = FIX_MIN;
20159 0 : *b_max = FIX_MAX;
20160 0 : return 1;
20161 : case 239:
20162 0 : *AType = 0;
20163 0 : *QType = 0;
20164 0 : *b_min = FIX_MIN;
20165 0 : *b_max = FIX_MAX;
20166 0 : return 1;
20167 : case 240:
20168 0 : *AType = 0;
20169 0 : *QType = 0;
20170 0 : *b_min = FIX_MIN;
20171 0 : *b_max = FIX_MAX;
20172 0 : return 1;
20173 : case 241:
20174 0 : *AType = 0;
20175 0 : *QType = 0;
20176 0 : *b_min = FIX_MIN;
20177 0 : *b_max = FIX_MAX;
20178 0 : return 1;
20179 : case 242:
20180 0 : *AType = 0;
20181 0 : *QType = 0;
20182 0 : *b_min = FIX_MIN;
20183 0 : *b_max = FIX_MAX;
20184 0 : return 1;
20185 : case 243:
20186 0 : *AType = 0;
20187 0 : *QType = 0;
20188 0 : *b_min = FIX_MIN;
20189 0 : *b_max = FIX_MAX;
20190 0 : return 1;
20191 : case 244:
20192 0 : *AType = 0;
20193 0 : *QType = 0;
20194 0 : *b_min = FIX_MIN;
20195 0 : *b_max = FIX_MAX;
20196 0 : return 1;
20197 : case 245:
20198 0 : *AType = 0;
20199 0 : *QType = 0;
20200 0 : *b_min = FIX_MIN;
20201 0 : *b_max = FIX_MAX;
20202 0 : return 1;
20203 : case 246:
20204 0 : *AType = 0;
20205 0 : *QType = 0;
20206 0 : *b_min = FIX_MIN;
20207 0 : *b_max = FIX_MAX;
20208 0 : return 1;
20209 : case 247:
20210 0 : *AType = 0;
20211 0 : *QType = 0;
20212 0 : *b_min = FIX_MIN;
20213 0 : *b_max = FIX_MAX;
20214 0 : return 1;
20215 : case 248:
20216 0 : *AType = 0;
20217 0 : *QType = 0;
20218 0 : *b_min = FIX_MIN;
20219 0 : *b_max = FIX_MAX;
20220 0 : return 1;
20221 : case 249:
20222 0 : *AType = 0;
20223 0 : *QType = 0;
20224 0 : *b_min = FIX_MIN;
20225 0 : *b_max = FIX_MAX;
20226 0 : return 1;
20227 : case 250:
20228 0 : *AType = 0;
20229 0 : *QType = 0;
20230 0 : *b_min = FIX_MIN;
20231 0 : *b_max = FIX_MAX;
20232 0 : return 1;
20233 : case 251:
20234 0 : *AType = 0;
20235 0 : *QType = 0;
20236 0 : *b_min = FIX_MIN;
20237 0 : *b_max = FIX_MAX;
20238 0 : return 1;
20239 : case 252:
20240 0 : *AType = 0;
20241 0 : *QType = 0;
20242 0 : *b_min = FIX_MIN;
20243 0 : *b_max = FIX_MAX;
20244 0 : return 1;
20245 : case 253:
20246 0 : *AType = 0;
20247 0 : *QType = 0;
20248 0 : *b_min = FIX_MIN;
20249 0 : *b_max = FIX_MAX;
20250 0 : return 1;
20251 : case 254:
20252 0 : *AType = 0;
20253 0 : *QType = 0;
20254 0 : *b_min = FIX_MIN;
20255 0 : *b_max = FIX_MAX;
20256 0 : return 1;
20257 : case 255:
20258 0 : *AType = 0;
20259 0 : *QType = 0;
20260 0 : *b_min = FIX_MIN;
20261 0 : *b_max = FIX_MAX;
20262 0 : return 1;
20263 : case 256:
20264 0 : *AType = 0;
20265 0 : *QType = 0;
20266 0 : *b_min = FIX_MIN;
20267 0 : *b_max = FIX_MAX;
20268 0 : return 1;
20269 : case 257:
20270 0 : *AType = 0;
20271 0 : *QType = 0;
20272 0 : *b_min = FIX_MIN;
20273 0 : *b_max = FIX_MAX;
20274 0 : return 1;
20275 : case 258:
20276 0 : *AType = 0;
20277 0 : *QType = 0;
20278 0 : *b_min = FIX_MIN;
20279 0 : *b_max = FIX_MAX;
20280 0 : return 1;
20281 : case 259:
20282 0 : *AType = 0;
20283 0 : *QType = 0;
20284 0 : *b_min = FIX_MIN;
20285 0 : *b_max = FIX_MAX;
20286 0 : return 1;
20287 : case 260:
20288 0 : *AType = 0;
20289 0 : *QType = 0;
20290 0 : *b_min = FIX_MIN;
20291 0 : *b_max = FIX_MAX;
20292 0 : return 1;
20293 : case 261:
20294 0 : *AType = 0;
20295 0 : *QType = 0;
20296 0 : *b_min = FIX_MIN;
20297 0 : *b_max = FIX_MAX;
20298 0 : return 1;
20299 : case 262:
20300 0 : *AType = 0;
20301 0 : *QType = 0;
20302 0 : *b_min = FIX_MIN;
20303 0 : *b_max = FIX_MAX;
20304 0 : return 1;
20305 : case 263:
20306 0 : *AType = 0;
20307 0 : *QType = 0;
20308 0 : *b_min = FIX_MIN;
20309 0 : *b_max = FIX_MAX;
20310 0 : return 1;
20311 : case 264:
20312 0 : *AType = 0;
20313 0 : *QType = 0;
20314 0 : *b_min = FIX_MIN;
20315 0 : *b_max = FIX_MAX;
20316 0 : return 1;
20317 : case 265:
20318 0 : *AType = 0;
20319 0 : *QType = 0;
20320 0 : *b_min = FIX_MIN;
20321 0 : *b_max = FIX_MAX;
20322 0 : return 1;
20323 : case 266:
20324 0 : *AType = 0;
20325 0 : *QType = 0;
20326 0 : *b_min = FIX_MIN;
20327 0 : *b_max = FIX_MAX;
20328 0 : return 1;
20329 : case 267:
20330 0 : *AType = 0;
20331 0 : *QType = 0;
20332 0 : *b_min = FIX_MIN;
20333 0 : *b_max = FIX_MAX;
20334 0 : return 1;
20335 : case 268:
20336 0 : *AType = 0;
20337 0 : *QType = 0;
20338 0 : *b_min = FIX_MIN;
20339 0 : *b_max = FIX_MAX;
20340 0 : return 1;
20341 : case 269:
20342 0 : *AType = 0;
20343 0 : *QType = 0;
20344 0 : *b_min = FIX_MIN;
20345 0 : *b_max = FIX_MAX;
20346 0 : return 1;
20347 : case 270:
20348 0 : *AType = 0;
20349 0 : *QType = 0;
20350 0 : *b_min = FIX_MIN;
20351 0 : *b_max = FIX_MAX;
20352 0 : return 1;
20353 : case 271:
20354 0 : *AType = 0;
20355 0 : *QType = 0;
20356 0 : *b_min = FIX_MIN;
20357 0 : *b_max = FIX_MAX;
20358 0 : return 1;
20359 : case 272:
20360 0 : *AType = 0;
20361 0 : *QType = 0;
20362 0 : *b_min = FIX_MIN;
20363 0 : *b_max = FIX_MAX;
20364 0 : return 1;
20365 : case 273:
20366 0 : *AType = 0;
20367 0 : *QType = 0;
20368 0 : *b_min = FIX_MIN;
20369 0 : *b_max = FIX_MAX;
20370 0 : return 1;
20371 : case 274:
20372 0 : *AType = 0;
20373 0 : *QType = 0;
20374 0 : *b_min = FIX_MIN;
20375 0 : *b_max = FIX_MAX;
20376 0 : return 1;
20377 : case 275:
20378 0 : *AType = 0;
20379 0 : *QType = 0;
20380 0 : *b_min = FIX_MIN;
20381 0 : *b_max = FIX_MAX;
20382 0 : return 1;
20383 : case 276:
20384 0 : *AType = 0;
20385 0 : *QType = 0;
20386 0 : *b_min = FIX_MIN;
20387 0 : *b_max = FIX_MAX;
20388 0 : return 1;
20389 : case 277:
20390 0 : *AType = 0;
20391 0 : *QType = 0;
20392 0 : *b_min = FIX_MIN;
20393 0 : *b_max = FIX_MAX;
20394 0 : return 1;
20395 : case 278:
20396 0 : *AType = 0;
20397 0 : *QType = 0;
20398 0 : *b_min = FIX_MIN;
20399 0 : *b_max = FIX_MAX;
20400 0 : return 1;
20401 : case 279:
20402 0 : *AType = 0;
20403 0 : *QType = 0;
20404 0 : *b_min = FIX_MIN;
20405 0 : *b_max = FIX_MAX;
20406 0 : return 1;
20407 : case 280:
20408 0 : *AType = 0;
20409 0 : *QType = 0;
20410 0 : *b_min = FIX_MIN;
20411 0 : *b_max = FIX_MAX;
20412 0 : return 1;
20413 : case 281:
20414 0 : *AType = 0;
20415 0 : *QType = 0;
20416 0 : *b_min = FIX_MIN;
20417 0 : *b_max = FIX_MAX;
20418 0 : return 1;
20419 : case 282:
20420 0 : *AType = 0;
20421 0 : *QType = 0;
20422 0 : *b_min = FIX_MIN;
20423 0 : *b_max = FIX_MAX;
20424 0 : return 1;
20425 : case 283:
20426 0 : *AType = 0;
20427 0 : *QType = 0;
20428 0 : *b_min = FIX_MIN;
20429 0 : *b_max = FIX_MAX;
20430 0 : return 1;
20431 : case 284:
20432 0 : *AType = 0;
20433 0 : *QType = 0;
20434 0 : *b_min = FIX_MIN;
20435 0 : *b_max = FIX_MAX;
20436 0 : return 1;
20437 : case 285:
20438 0 : *AType = 0;
20439 0 : *QType = 0;
20440 0 : *b_min = FIX_MIN;
20441 0 : *b_max = FIX_MAX;
20442 0 : return 1;
20443 : case 286:
20444 0 : *AType = 0;
20445 0 : *QType = 0;
20446 0 : *b_min = FIX_MIN;
20447 0 : *b_max = FIX_MAX;
20448 0 : return 1;
20449 : case 287:
20450 0 : *AType = 0;
20451 0 : *QType = 0;
20452 0 : *b_min = FIX_MIN;
20453 0 : *b_max = FIX_MAX;
20454 0 : return 1;
20455 : case 288:
20456 0 : *AType = 0;
20457 0 : *QType = 0;
20458 0 : *b_min = FIX_MIN;
20459 0 : *b_max = FIX_MAX;
20460 0 : return 1;
20461 : case 289:
20462 0 : *AType = 0;
20463 0 : *QType = 0;
20464 0 : *b_min = FIX_MIN;
20465 0 : *b_max = FIX_MAX;
20466 0 : return 1;
20467 : case 290:
20468 0 : *AType = 0;
20469 0 : *QType = 0;
20470 0 : *b_min = FIX_MIN;
20471 0 : *b_max = FIX_MAX;
20472 0 : return 1;
20473 : case 291:
20474 0 : *AType = 0;
20475 0 : *QType = 0;
20476 0 : *b_min = FIX_MIN;
20477 0 : *b_max = FIX_MAX;
20478 0 : return 1;
20479 : case 292:
20480 0 : *AType = 0;
20481 0 : *QType = 0;
20482 0 : *b_min = FIX_MIN;
20483 0 : *b_max = FIX_MAX;
20484 0 : return 1;
20485 : case 293:
20486 0 : *AType = 0;
20487 0 : *QType = 0;
20488 0 : *b_min = FIX_MIN;
20489 0 : *b_max = FIX_MAX;
20490 0 : return 1;
20491 : case 294:
20492 0 : *AType = 0;
20493 0 : *QType = 0;
20494 0 : *b_min = FIX_MIN;
20495 0 : *b_max = FIX_MAX;
20496 0 : return 1;
20497 : case 295:
20498 0 : *AType = 0;
20499 0 : *QType = 0;
20500 0 : *b_min = FIX_MIN;
20501 0 : *b_max = FIX_MAX;
20502 0 : return 1;
20503 : default:
20504 0 : return 0;
20505 : }
20506 0 : }
20507 :
20508 :
20509 :
20510 : GF_Node *BAP_Create()
20511 : {
20512 : M_BAP *p;
20513 0 : GF_SAFEALLOC(p, M_BAP);
20514 0 : if(!p) return NULL;
20515 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_BAP);
20516 :
20517 : /*default field values*/
20518 0 : p->sacroiliac_tilt = 1 << 31;
20519 0 : p->sacroiliac_torsion = 1 << 31;
20520 0 : p->sacroiliac_roll = 1 << 31;
20521 0 : p->l_hip_flexion = 1 << 31;
20522 0 : p->r_hip_flexion = 1 << 31;
20523 0 : p->l_hip_abduct = 1 << 31;
20524 0 : p->r_hip_abduct = 1 << 31;
20525 0 : p->l_hip_twisting = 1 << 31;
20526 0 : p->r_hip_twisting = 1 << 31;
20527 0 : p->l_knee_flexion = 1 << 31;
20528 0 : p->r_knee_flexion = 1 << 31;
20529 0 : p->l_knee_twisting = 1 << 31;
20530 0 : p->r_knee_twisting = 1 << 31;
20531 0 : p->l_ankle_flexion = 1 << 31;
20532 0 : p->r_ankle_flexion = 1 << 31;
20533 0 : p->l_ankle_twisting = 1 << 31;
20534 0 : p->r_ankle_twisting = 1 << 31;
20535 0 : p->l_subtalar_flexion = 1 << 31;
20536 0 : p->r_subtalar_flexion = 1 << 31;
20537 0 : p->l_midtarsal_flexion = 1 << 31;
20538 0 : p->r_midtarsal_flexion = 1 << 31;
20539 0 : p->l_metatarsal_flexion = 1 << 31;
20540 0 : p->r_metatarsal_flexion = 1 << 31;
20541 0 : p->l_sternoclavicular_abduct = 1 << 31;
20542 0 : p->r_sternoclavicular_abduct = 1 << 31;
20543 0 : p->l_sternoclavicular_rotate = 1 << 31;
20544 0 : p->r_sternoclavicular_rotate = 1 << 31;
20545 0 : p->l_acromioclavicular_abduct = 1 << 31;
20546 0 : p->r_acromioclavicular_abduct = 1 << 31;
20547 0 : p->l_acromioclavicular_rotate = 1 << 31;
20548 0 : p->r_acromioclavicular_rotate = 1 << 31;
20549 0 : p->l_shoulder_flexion = 1 << 31;
20550 0 : p->r_shoulder_flexion = 1 << 31;
20551 0 : p->l_shoulder_abduct = 1 << 31;
20552 0 : p->r_shoulder_abduct = 1 << 31;
20553 0 : p->l_shoulder_twisting = 1 << 31;
20554 0 : p->r_shoulder_twisting = 1 << 31;
20555 0 : p->l_elbow_flexion = 1 << 31;
20556 0 : p->r_elbow_flexion = 1 << 31;
20557 0 : p->l_elbow_twisting = 1 << 31;
20558 0 : p->r_elbow_twisting = 1 << 31;
20559 0 : p->l_wrist_flexion = 1 << 31;
20560 0 : p->r_wrist_flexion = 1 << 31;
20561 0 : p->l_wrist_pivot = 1 << 31;
20562 0 : p->r_wrist_pivot = 1 << 31;
20563 0 : p->l_wrist_twisting = 1 << 31;
20564 0 : p->r_wrist_twisting = 1 << 31;
20565 0 : p->skullbase_roll = 1 << 31;
20566 0 : p->skullbase_torsion = 1 << 31;
20567 0 : p->skullbase_tilt = 1 << 31;
20568 0 : p->vc1roll = 1 << 31;
20569 0 : p->vc1torsion = 1 << 31;
20570 0 : p->vc1tilt = 1 << 31;
20571 0 : p->vc2roll = 1 << 31;
20572 0 : p->vc2torsion = 1 << 31;
20573 0 : p->vc2tilt = 1 << 31;
20574 0 : p->vc3roll = 1 << 31;
20575 0 : p->vc3torsion = 1 << 31;
20576 0 : p->vc3tilt = 1 << 31;
20577 0 : p->vc4roll = 1 << 31;
20578 0 : p->vc4torsion = 1 << 31;
20579 0 : p->vc4tilt = 1 << 31;
20580 0 : p->vc5roll = 1 << 31;
20581 0 : p->vc5torsion = 1 << 31;
20582 0 : p->vc5tilt = 1 << 31;
20583 0 : p->vc6roll = 1 << 31;
20584 0 : p->vc6torsion = 1 << 31;
20585 0 : p->vc6tilt = 1 << 31;
20586 0 : p->vc7roll = 1 << 31;
20587 0 : p->vc7torsion = 1 << 31;
20588 0 : p->vc7tilt = 1 << 31;
20589 0 : p->vt1roll = 1 << 31;
20590 0 : p->vt1torsion = 1 << 31;
20591 0 : p->vt1tilt = 1 << 31;
20592 0 : p->vt2roll = 1 << 31;
20593 0 : p->vt2torsion = 1 << 31;
20594 0 : p->vt2tilt = 1 << 31;
20595 0 : p->vt3roll = 1 << 31;
20596 0 : p->vt3torsion = 1 << 31;
20597 0 : p->vt3tilt = 1 << 31;
20598 0 : p->vt4roll = 1 << 31;
20599 0 : p->vt4torsion = 1 << 31;
20600 0 : p->vt4tilt = 1 << 31;
20601 0 : p->vt5roll = 1 << 31;
20602 0 : p->vt5torsion = 1 << 31;
20603 0 : p->vt5tilt = 1 << 31;
20604 0 : p->vt6roll = 1 << 31;
20605 0 : p->vt6torsion = 1 << 31;
20606 0 : p->vt6tilt = 1 << 31;
20607 0 : p->vt7roll = 1 << 31;
20608 0 : p->vt7torsion = 1 << 31;
20609 0 : p->vt7tilt = 1 << 31;
20610 0 : p->vt8roll = 1 << 31;
20611 0 : p->vt8torsion = 1 << 31;
20612 0 : p->vt8tilt = 1 << 31;
20613 0 : p->vt9roll = 1 << 31;
20614 0 : p->vt9torsion = 1 << 31;
20615 0 : p->vt9tilt = 1 << 31;
20616 0 : p->vt10roll = 1 << 31;
20617 0 : p->vt10torsion = 1 << 31;
20618 0 : p->vt10tilt = 1 << 31;
20619 0 : p->vt11roll = 1 << 31;
20620 0 : p->vt11torsion = 1 << 31;
20621 0 : p->vt11tilt = 1 << 31;
20622 0 : p->vt12roll = 1 << 31;
20623 0 : p->vt12torsion = 1 << 31;
20624 0 : p->vt12tilt = 1 << 31;
20625 0 : p->vl1roll = 1 << 31;
20626 0 : p->vl1torsion = 1 << 31;
20627 0 : p->vl1tilt = 1 << 31;
20628 0 : p->vl2roll = 1 << 31;
20629 0 : p->vl2torsion = 1 << 31;
20630 0 : p->vl2tilt = 1 << 31;
20631 0 : p->vl3roll = 1 << 31;
20632 0 : p->vl3torsion = 1 << 31;
20633 0 : p->vl3tilt = 1 << 31;
20634 0 : p->vl4roll = 1 << 31;
20635 0 : p->vl4torsion = 1 << 31;
20636 0 : p->vl4tilt = 1 << 31;
20637 0 : p->vl5roll = 1 << 31;
20638 0 : p->vl5torsion = 1 << 31;
20639 0 : p->vl5tilt = 1 << 31;
20640 0 : p->l_pinky0_flexion = 1 << 31;
20641 0 : p->r_pinky0_flexion = 1 << 31;
20642 0 : p->l_pinky1_flexion = 1 << 31;
20643 0 : p->r_pinky1_flexion = 1 << 31;
20644 0 : p->l_pinky1_pivot = 1 << 31;
20645 0 : p->r_pinky1_pivot = 1 << 31;
20646 0 : p->l_pinky1_twisting = 1 << 31;
20647 0 : p->r_pinky1_twisting = 1 << 31;
20648 0 : p->l_pinky2_flexion = 1 << 31;
20649 0 : p->r_pinky2_flexion = 1 << 31;
20650 0 : p->l_pinky3_flexion = 1 << 31;
20651 0 : p->r_pinky3_flexion = 1 << 31;
20652 0 : p->l_ring0_flexion = 1 << 31;
20653 0 : p->r_ring0_flexion = 1 << 31;
20654 0 : p->l_ring1_flexion = 1 << 31;
20655 0 : p->r_ring1_flexion = 1 << 31;
20656 0 : p->l_ring1_pivot = 1 << 31;
20657 0 : p->r_ring1_pivot = 1 << 31;
20658 0 : p->l_ring1_twisting = 1 << 31;
20659 0 : p->r_ring1_twisting = 1 << 31;
20660 0 : p->l_ring2_flexion = 1 << 31;
20661 0 : p->r_ring2_flexion = 1 << 31;
20662 0 : p->l_ring3_flexion = 1 << 31;
20663 0 : p->r_ring3_flexion = 1 << 31;
20664 0 : p->l_middle0_flexion = 1 << 31;
20665 0 : p->r_middle0_flexion = 1 << 31;
20666 0 : p->l_middle1_flexion = 1 << 31;
20667 0 : p->r_middle1_flexion = 1 << 31;
20668 0 : p->l_middle1_pivot = 1 << 31;
20669 0 : p->r_middle1_pivot = 1 << 31;
20670 0 : p->l_middle1_twisting = 1 << 31;
20671 0 : p->r_middle1_twisting = 1 << 31;
20672 0 : p->l_middle2_flexion = 1 << 31;
20673 0 : p->r_middle2_flexion = 1 << 31;
20674 0 : p->l_middle3_flexion = 1 << 31;
20675 0 : p->r_middle3_flexion = 1 << 31;
20676 0 : p->l_index0_flexion = 1 << 31;
20677 0 : p->r_index0_flexion = 1 << 31;
20678 0 : p->l_index1_flexion = 1 << 31;
20679 0 : p->r_index1_flexion = 1 << 31;
20680 0 : p->l_index1_pivot = 1 << 31;
20681 0 : p->r_index1_pivot = 1 << 31;
20682 0 : p->l_index1_twisting = 1 << 31;
20683 0 : p->r_index1_twisting = 1 << 31;
20684 0 : p->l_index2_flexion = 1 << 31;
20685 0 : p->r_index2_flexion = 1 << 31;
20686 0 : p->l_index3_flexion = 1 << 31;
20687 0 : p->r_index3_flexion = 1 << 31;
20688 0 : p->l_thumb1_flexion = 1 << 31;
20689 0 : p->r_thumb1_flexion = 1 << 31;
20690 0 : p->l_thumb1_pivot = 1 << 31;
20691 0 : p->r_thumb1_pivot = 1 << 31;
20692 0 : p->l_thumb1_twisting = 1 << 31;
20693 0 : p->r_thumb1_twisting = 1 << 31;
20694 0 : p->l_thumb2_flexion = 1 << 31;
20695 0 : p->r_thumb2_flexion = 1 << 31;
20696 0 : p->l_thumb3_flexion = 1 << 31;
20697 0 : p->r_thumb3_flexion = 1 << 31;
20698 0 : p->HumanoidRoot_tr_vertical = 1 << 31;
20699 0 : p->HumanoidRoot_tr_lateral = 1 << 31;
20700 0 : p->HumanoidRoot_tr_frontal = 1 << 31;
20701 0 : p->HumanoidRoot_rt_body_turn = 1 << 31;
20702 0 : p->HumanoidRoot_rt_body_roll = 1 << 31;
20703 0 : p->HumanoidRoot_rt_body_tilt = 1 << 31;
20704 0 : p->extensionBap187 = 1 << 31;
20705 0 : p->extensionBap188 = 1 << 31;
20706 0 : p->extensionBap189 = 1 << 31;
20707 0 : p->extensionBap190 = 1 << 31;
20708 0 : p->extensionBap191 = 1 << 31;
20709 0 : p->extensionBap192 = 1 << 31;
20710 0 : p->extensionBap193 = 1 << 31;
20711 0 : p->extensionBap194 = 1 << 31;
20712 0 : p->extensionBap195 = 1 << 31;
20713 0 : p->extensionBap196 = 1 << 31;
20714 0 : p->extensionBap197 = 1 << 31;
20715 0 : p->extensionBap198 = 1 << 31;
20716 0 : p->extensionBap199 = 1 << 31;
20717 0 : p->extensionBap200 = 1 << 31;
20718 0 : p->extensionBap201 = 1 << 31;
20719 0 : p->extensionBap202 = 1 << 31;
20720 0 : p->extensionBap203 = 1 << 31;
20721 0 : p->extensionBap204 = 1 << 31;
20722 0 : p->extensionBap205 = 1 << 31;
20723 0 : p->extensionBap206 = 1 << 31;
20724 0 : p->extensionBap207 = 1 << 31;
20725 0 : p->extensionBap208 = 1 << 31;
20726 0 : p->extensionBap209 = 1 << 31;
20727 0 : p->extensionBap210 = 1 << 31;
20728 0 : p->extensionBap211 = 1 << 31;
20729 0 : p->extensionBap212 = 1 << 31;
20730 0 : p->extensionBap213 = 1 << 31;
20731 0 : p->extensionBap214 = 1 << 31;
20732 0 : p->extensionBap215 = 1 << 31;
20733 0 : p->extensionBap216 = 1 << 31;
20734 0 : p->extensionBap217 = 1 << 31;
20735 0 : p->extensionBap218 = 1 << 31;
20736 0 : p->extensionBap219 = 1 << 31;
20737 0 : p->extensionBap220 = 1 << 31;
20738 0 : p->extensionBap221 = 1 << 31;
20739 0 : p->extensionBap222 = 1 << 31;
20740 0 : p->extensionBap223 = 1 << 31;
20741 0 : p->extensionBap224 = 1 << 31;
20742 0 : p->extensionBap225 = 1 << 31;
20743 0 : p->extensionBap226 = 1 << 31;
20744 0 : p->extensionBap227 = 1 << 31;
20745 0 : p->extensionBap228 = 1 << 31;
20746 0 : p->extensionBap229 = 1 << 31;
20747 0 : p->extensionBap230 = 1 << 31;
20748 0 : p->extensionBap231 = 1 << 31;
20749 0 : p->extensionBap232 = 1 << 31;
20750 0 : p->extensionBap233 = 1 << 31;
20751 0 : p->extensionBap234 = 1 << 31;
20752 0 : p->extensionBap235 = 1 << 31;
20753 0 : p->extensionBap236 = 1 << 31;
20754 0 : p->extensionBap237 = 1 << 31;
20755 0 : p->extensionBap238 = 1 << 31;
20756 0 : p->extensionBap239 = 1 << 31;
20757 0 : p->extensionBap240 = 1 << 31;
20758 0 : p->extensionBap241 = 1 << 31;
20759 0 : p->extensionBap242 = 1 << 31;
20760 0 : p->extensionBap243 = 1 << 31;
20761 0 : p->extensionBap244 = 1 << 31;
20762 0 : p->extensionBap245 = 1 << 31;
20763 0 : p->extensionBap246 = 1 << 31;
20764 0 : p->extensionBap247 = 1 << 31;
20765 0 : p->extensionBap248 = 1 << 31;
20766 0 : p->extensionBap249 = 1 << 31;
20767 0 : p->extensionBap250 = 1 << 31;
20768 0 : p->extensionBap251 = 1 << 31;
20769 0 : p->extensionBap252 = 1 << 31;
20770 0 : p->extensionBap253 = 1 << 31;
20771 0 : p->extensionBap254 = 1 << 31;
20772 0 : p->extensionBap255 = 1 << 31;
20773 0 : p->extensionBap256 = 1 << 31;
20774 0 : p->extensionBap257 = 1 << 31;
20775 0 : p->extensionBap258 = 1 << 31;
20776 0 : p->extensionBap259 = 1 << 31;
20777 0 : p->extensionBap260 = 1 << 31;
20778 0 : p->extensionBap261 = 1 << 31;
20779 0 : p->extensionBap262 = 1 << 31;
20780 0 : p->extensionBap263 = 1 << 31;
20781 0 : p->extensionBap264 = 1 << 31;
20782 0 : p->extensionBap265 = 1 << 31;
20783 0 : p->extensionBap266 = 1 << 31;
20784 0 : p->extensionBap267 = 1 << 31;
20785 0 : p->extensionBap268 = 1 << 31;
20786 0 : p->extensionBap269 = 1 << 31;
20787 0 : p->extensionBap270 = 1 << 31;
20788 0 : p->extensionBap271 = 1 << 31;
20789 0 : p->extensionBap272 = 1 << 31;
20790 0 : p->extensionBap273 = 1 << 31;
20791 0 : p->extensionBap274 = 1 << 31;
20792 0 : p->extensionBap275 = 1 << 31;
20793 0 : p->extensionBap276 = 1 << 31;
20794 0 : p->extensionBap277 = 1 << 31;
20795 0 : p->extensionBap278 = 1 << 31;
20796 0 : p->extensionBap279 = 1 << 31;
20797 0 : p->extensionBap280 = 1 << 31;
20798 0 : p->extensionBap281 = 1 << 31;
20799 0 : p->extensionBap282 = 1 << 31;
20800 0 : p->extensionBap283 = 1 << 31;
20801 0 : p->extensionBap284 = 1 << 31;
20802 0 : p->extensionBap285 = 1 << 31;
20803 0 : p->extensionBap286 = 1 << 31;
20804 0 : p->extensionBap287 = 1 << 31;
20805 0 : p->extensionBap288 = 1 << 31;
20806 0 : p->extensionBap289 = 1 << 31;
20807 0 : p->extensionBap290 = 1 << 31;
20808 0 : p->extensionBap291 = 1 << 31;
20809 0 : p->extensionBap292 = 1 << 31;
20810 0 : p->extensionBap293 = 1 << 31;
20811 0 : p->extensionBap294 = 1 << 31;
20812 0 : p->extensionBap295 = 1 << 31;
20813 0 : p->extensionBap296 = 1 << 31;
20814 0 : return (GF_Node *)p;
20815 0 : }
20816 :
20817 :
20818 : /*
20819 : BDP Node deletion
20820 : */
20821 :
20822 : static void BDP_Del(GF_Node *node)
20823 : {
20824 0 : M_BDP *p = (M_BDP *) node;
20825 0 : gf_node_unregister_children((GF_Node *) p, p->bodyDefTables);
20826 0 : gf_node_unregister_children((GF_Node *) p, p->bodySceneGraph);
20827 0 : gf_node_free((GF_Node *) p);
20828 0 : }
20829 :
20830 : static const u16 BDP_Def2All[] = { 0, 1};
20831 : static const u16 BDP_In2All[] = { 0, 1};
20832 : static const u16 BDP_Out2All[] = { 0, 1};
20833 :
20834 : static u32 BDP_get_field_count(GF_Node *node, u8 IndexMode)
20835 : {
20836 0 : switch(IndexMode) {
20837 : case GF_SG_FIELD_CODING_IN:
20838 0 : return 2;
20839 : case GF_SG_FIELD_CODING_DEF:
20840 0 : return 2;
20841 : case GF_SG_FIELD_CODING_OUT:
20842 0 : return 2;
20843 : case GF_SG_FIELD_CODING_DYN:
20844 0 : return 0;
20845 : default:
20846 0 : return 2;
20847 : }
20848 0 : }
20849 :
20850 : static GF_Err BDP_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
20851 : {
20852 0 : switch(IndexMode) {
20853 : case GF_SG_FIELD_CODING_IN:
20854 0 : *allField = BDP_In2All[inField];
20855 0 : return GF_OK;
20856 : case GF_SG_FIELD_CODING_DEF:
20857 0 : *allField = BDP_Def2All[inField];
20858 0 : return GF_OK;
20859 : case GF_SG_FIELD_CODING_OUT:
20860 0 : *allField = BDP_Out2All[inField];
20861 0 : return GF_OK;
20862 : default:
20863 0 : return GF_BAD_PARAM;
20864 : }
20865 0 : }
20866 : static GF_Err BDP_get_field(GF_Node *node, GF_FieldInfo *info)
20867 : {
20868 0 : switch (info->fieldIndex) {
20869 : case 0:
20870 0 : info->name = "bodyDefTables";
20871 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
20872 0 : info->fieldType = GF_SG_VRML_MFNODE;
20873 0 : info->NDTtype = NDT_SFBodyDefTableNode;
20874 0 : info->far_ptr = & ((M_BDP *)node)->bodyDefTables;
20875 0 : return GF_OK;
20876 : case 1:
20877 0 : info->name = "bodySceneGraph";
20878 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
20879 0 : info->fieldType = GF_SG_VRML_MFNODE;
20880 0 : info->NDTtype = NDT_SF3DNode;
20881 0 : info->far_ptr = & ((M_BDP *)node)->bodySceneGraph;
20882 0 : return GF_OK;
20883 : default:
20884 0 : return GF_BAD_PARAM;
20885 : }
20886 0 : }
20887 :
20888 :
20889 : static s32 BDP_get_field_index_by_name(char *name)
20890 : {
20891 0 : if (!strcmp("bodyDefTables", name)) return 0;
20892 0 : if (!strcmp("bodySceneGraph", name)) return 1;
20893 0 : return -1;
20894 0 : }
20895 : static Bool BDP_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
20896 : {
20897 : switch (FieldIndex) {
20898 : default:
20899 0 : return 0;
20900 : }
20901 : }
20902 :
20903 :
20904 :
20905 : GF_Node *BDP_Create()
20906 : {
20907 : M_BDP *p;
20908 0 : GF_SAFEALLOC(p, M_BDP);
20909 0 : if(!p) return NULL;
20910 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_BDP);
20911 :
20912 : /*default field values*/
20913 0 : return (GF_Node *)p;
20914 0 : }
20915 :
20916 :
20917 : /*
20918 : Body Node deletion
20919 : */
20920 :
20921 : static void Body_Del(GF_Node *node)
20922 : {
20923 0 : M_Body *p = (M_Body *) node;
20924 0 : gf_node_unregister((GF_Node *) p->bdp, (GF_Node *) p);
20925 0 : gf_node_unregister((GF_Node *) p->bap, (GF_Node *) p);
20926 0 : gf_node_unregister_children((GF_Node *) p, p->renderedBody);
20927 0 : gf_node_free((GF_Node *) p);
20928 0 : }
20929 :
20930 : static const u16 Body_Def2All[] = { 0, 1, 2};
20931 : static const u16 Body_In2All[] = { 0, 1, 2};
20932 : static const u16 Body_Out2All[] = { 0, 1, 2};
20933 :
20934 : static u32 Body_get_field_count(GF_Node *node, u8 IndexMode)
20935 : {
20936 0 : switch(IndexMode) {
20937 : case GF_SG_FIELD_CODING_IN:
20938 0 : return 3;
20939 : case GF_SG_FIELD_CODING_DEF:
20940 0 : return 3;
20941 : case GF_SG_FIELD_CODING_OUT:
20942 0 : return 3;
20943 : case GF_SG_FIELD_CODING_DYN:
20944 0 : return 0;
20945 : default:
20946 0 : return 3;
20947 : }
20948 0 : }
20949 :
20950 : static GF_Err Body_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
20951 : {
20952 0 : switch(IndexMode) {
20953 : case GF_SG_FIELD_CODING_IN:
20954 0 : *allField = Body_In2All[inField];
20955 0 : return GF_OK;
20956 : case GF_SG_FIELD_CODING_DEF:
20957 0 : *allField = Body_Def2All[inField];
20958 0 : return GF_OK;
20959 : case GF_SG_FIELD_CODING_OUT:
20960 0 : *allField = Body_Out2All[inField];
20961 0 : return GF_OK;
20962 : default:
20963 0 : return GF_BAD_PARAM;
20964 : }
20965 0 : }
20966 : static GF_Err Body_get_field(GF_Node *node, GF_FieldInfo *info)
20967 : {
20968 0 : switch (info->fieldIndex) {
20969 : case 0:
20970 0 : info->name = "bdp";
20971 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
20972 0 : info->fieldType = GF_SG_VRML_SFNODE;
20973 0 : info->NDTtype = NDT_SFBDPNode;
20974 0 : info->far_ptr = & ((M_Body *)node)->bdp;
20975 0 : return GF_OK;
20976 : case 1:
20977 0 : info->name = "bap";
20978 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
20979 0 : info->fieldType = GF_SG_VRML_SFNODE;
20980 0 : info->NDTtype = NDT_SFBAPNode;
20981 0 : info->far_ptr = & ((M_Body *)node)->bap;
20982 0 : return GF_OK;
20983 : case 2:
20984 0 : info->name = "renderedBody";
20985 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
20986 0 : info->fieldType = GF_SG_VRML_MFNODE;
20987 0 : info->NDTtype = NDT_SF3DNode;
20988 0 : info->far_ptr = & ((M_Body *)node)->renderedBody;
20989 0 : return GF_OK;
20990 : default:
20991 0 : return GF_BAD_PARAM;
20992 : }
20993 0 : }
20994 :
20995 :
20996 : static s32 Body_get_field_index_by_name(char *name)
20997 : {
20998 0 : if (!strcmp("bdp", name)) return 0;
20999 0 : if (!strcmp("bap", name)) return 1;
21000 0 : if (!strcmp("renderedBody", name)) return 2;
21001 0 : return -1;
21002 0 : }
21003 : static Bool Body_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
21004 : {
21005 : switch (FieldIndex) {
21006 : default:
21007 0 : return 0;
21008 : }
21009 : }
21010 :
21011 :
21012 :
21013 : GF_Node *Body_Create()
21014 : {
21015 : M_Body *p;
21016 0 : GF_SAFEALLOC(p, M_Body);
21017 0 : if(!p) return NULL;
21018 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Body);
21019 :
21020 : /*default field values*/
21021 0 : return (GF_Node *)p;
21022 0 : }
21023 :
21024 :
21025 : /*
21026 : BodyDefTable Node deletion
21027 : */
21028 :
21029 : static void BodyDefTable_Del(GF_Node *node)
21030 : {
21031 0 : M_BodyDefTable *p = (M_BodyDefTable *) node;
21032 0 : gf_sg_sfstring_del(p->bodySceneGraphNodeName);
21033 0 : gf_sg_mfint32_del(p->bapIDs);
21034 0 : gf_sg_mfint32_del(p->vertexIds);
21035 0 : gf_sg_mfint32_del(p->bapCombinations);
21036 0 : gf_sg_mfvec3f_del(p->displacements);
21037 0 : gf_node_free((GF_Node *) p);
21038 0 : }
21039 :
21040 : static const u16 BodyDefTable_Def2All[] = { 0, 1, 2, 3, 4, 5};
21041 : static const u16 BodyDefTable_In2All[] = { 0, 1, 2, 3, 4, 5};
21042 : static const u16 BodyDefTable_Out2All[] = { 0, 1, 2, 3, 4, 5};
21043 :
21044 : static u32 BodyDefTable_get_field_count(GF_Node *node, u8 IndexMode)
21045 : {
21046 0 : switch(IndexMode) {
21047 : case GF_SG_FIELD_CODING_IN:
21048 0 : return 6;
21049 : case GF_SG_FIELD_CODING_DEF:
21050 0 : return 6;
21051 : case GF_SG_FIELD_CODING_OUT:
21052 0 : return 6;
21053 : case GF_SG_FIELD_CODING_DYN:
21054 0 : return 0;
21055 : default:
21056 0 : return 6;
21057 : }
21058 0 : }
21059 :
21060 : static GF_Err BodyDefTable_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
21061 : {
21062 0 : switch(IndexMode) {
21063 : case GF_SG_FIELD_CODING_IN:
21064 0 : *allField = BodyDefTable_In2All[inField];
21065 0 : return GF_OK;
21066 : case GF_SG_FIELD_CODING_DEF:
21067 0 : *allField = BodyDefTable_Def2All[inField];
21068 0 : return GF_OK;
21069 : case GF_SG_FIELD_CODING_OUT:
21070 0 : *allField = BodyDefTable_Out2All[inField];
21071 0 : return GF_OK;
21072 : default:
21073 0 : return GF_BAD_PARAM;
21074 : }
21075 0 : }
21076 : static GF_Err BodyDefTable_get_field(GF_Node *node, GF_FieldInfo *info)
21077 : {
21078 0 : switch (info->fieldIndex) {
21079 : case 0:
21080 0 : info->name = "bodySceneGraphNodeName";
21081 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21082 0 : info->fieldType = GF_SG_VRML_SFSTRING;
21083 0 : info->far_ptr = & ((M_BodyDefTable *) node)->bodySceneGraphNodeName;
21084 0 : return GF_OK;
21085 : case 1:
21086 0 : info->name = "bapIDs";
21087 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21088 0 : info->fieldType = GF_SG_VRML_MFINT32;
21089 0 : info->far_ptr = & ((M_BodyDefTable *) node)->bapIDs;
21090 0 : return GF_OK;
21091 : case 2:
21092 0 : info->name = "vertexIds";
21093 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21094 0 : info->fieldType = GF_SG_VRML_MFINT32;
21095 0 : info->far_ptr = & ((M_BodyDefTable *) node)->vertexIds;
21096 0 : return GF_OK;
21097 : case 3:
21098 0 : info->name = "bapCombinations";
21099 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21100 0 : info->fieldType = GF_SG_VRML_MFINT32;
21101 0 : info->far_ptr = & ((M_BodyDefTable *) node)->bapCombinations;
21102 0 : return GF_OK;
21103 : case 4:
21104 0 : info->name = "displacements";
21105 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21106 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
21107 0 : info->far_ptr = & ((M_BodyDefTable *) node)->displacements;
21108 0 : return GF_OK;
21109 : case 5:
21110 0 : info->name = "numInterpolateKeys";
21111 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21112 0 : info->fieldType = GF_SG_VRML_SFINT32;
21113 0 : info->far_ptr = & ((M_BodyDefTable *) node)->numInterpolateKeys;
21114 0 : return GF_OK;
21115 : default:
21116 0 : return GF_BAD_PARAM;
21117 : }
21118 0 : }
21119 :
21120 :
21121 : static s32 BodyDefTable_get_field_index_by_name(char *name)
21122 : {
21123 0 : if (!strcmp("bodySceneGraphNodeName", name)) return 0;
21124 0 : if (!strcmp("bapIDs", name)) return 1;
21125 0 : if (!strcmp("vertexIds", name)) return 2;
21126 0 : if (!strcmp("bapCombinations", name)) return 3;
21127 0 : if (!strcmp("displacements", name)) return 4;
21128 0 : if (!strcmp("numInterpolateKeys", name)) return 5;
21129 0 : return -1;
21130 0 : }
21131 : static Bool BodyDefTable_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
21132 : {
21133 0 : switch (FieldIndex) {
21134 : case 1:
21135 0 : *AType = 0;
21136 0 : *QType = 13;
21137 0 : *QT13_bits = 9;
21138 0 : *b_min = FLT2FIX(1);
21139 0 : *b_max = FLT2FIX(296);
21140 0 : return 1;
21141 : case 2:
21142 0 : *AType = 0;
21143 0 : *QType = 0;
21144 0 : *b_min = FLT2FIX(0);
21145 0 : *b_max = FIX_MAX;
21146 0 : return 1;
21147 : case 3:
21148 0 : *AType = 0;
21149 0 : *QType = 0;
21150 0 : *b_min = FIX_MIN;
21151 0 : *b_max = FIX_MAX;
21152 0 : return 1;
21153 : case 5:
21154 0 : *AType = 0;
21155 0 : *QType = 0;
21156 0 : *b_min = FLT2FIX(2);
21157 0 : *b_max = FIX_MAX;
21158 0 : return 1;
21159 : default:
21160 0 : return 0;
21161 : }
21162 0 : }
21163 :
21164 :
21165 :
21166 : GF_Node *BodyDefTable_Create()
21167 : {
21168 : M_BodyDefTable *p;
21169 0 : GF_SAFEALLOC(p, M_BodyDefTable);
21170 0 : if(!p) return NULL;
21171 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_BodyDefTable);
21172 :
21173 : /*default field values*/
21174 0 : p->numInterpolateKeys = 2;
21175 0 : return (GF_Node *)p;
21176 0 : }
21177 :
21178 :
21179 : /*
21180 : BodySegmentConnectionHint Node deletion
21181 : */
21182 :
21183 : static void BodySegmentConnectionHint_Del(GF_Node *node)
21184 : {
21185 0 : M_BodySegmentConnectionHint *p = (M_BodySegmentConnectionHint *) node;
21186 0 : gf_sg_sfstring_del(p->firstSegmentNodeName);
21187 0 : gf_sg_sfstring_del(p->secondSegmentNodeName);
21188 0 : gf_sg_mfint32_del(p->firstVertexIdList);
21189 0 : gf_sg_mfint32_del(p->secondVertexIdList);
21190 0 : gf_node_free((GF_Node *) p);
21191 0 : }
21192 :
21193 : static const u16 BodySegmentConnectionHint_Def2All[] = { 0, 1, 2, 3};
21194 : static const u16 BodySegmentConnectionHint_In2All[] = { 0, 1, 2, 3};
21195 : static const u16 BodySegmentConnectionHint_Out2All[] = { 0, 1, 2, 3};
21196 :
21197 : static u32 BodySegmentConnectionHint_get_field_count(GF_Node *node, u8 IndexMode)
21198 : {
21199 0 : switch(IndexMode) {
21200 : case GF_SG_FIELD_CODING_IN:
21201 0 : return 4;
21202 : case GF_SG_FIELD_CODING_DEF:
21203 0 : return 4;
21204 : case GF_SG_FIELD_CODING_OUT:
21205 0 : return 4;
21206 : case GF_SG_FIELD_CODING_DYN:
21207 0 : return 0;
21208 : default:
21209 0 : return 4;
21210 : }
21211 0 : }
21212 :
21213 : static GF_Err BodySegmentConnectionHint_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
21214 : {
21215 0 : switch(IndexMode) {
21216 : case GF_SG_FIELD_CODING_IN:
21217 0 : *allField = BodySegmentConnectionHint_In2All[inField];
21218 0 : return GF_OK;
21219 : case GF_SG_FIELD_CODING_DEF:
21220 0 : *allField = BodySegmentConnectionHint_Def2All[inField];
21221 0 : return GF_OK;
21222 : case GF_SG_FIELD_CODING_OUT:
21223 0 : *allField = BodySegmentConnectionHint_Out2All[inField];
21224 0 : return GF_OK;
21225 : default:
21226 0 : return GF_BAD_PARAM;
21227 : }
21228 0 : }
21229 : static GF_Err BodySegmentConnectionHint_get_field(GF_Node *node, GF_FieldInfo *info)
21230 : {
21231 0 : switch (info->fieldIndex) {
21232 : case 0:
21233 0 : info->name = "firstSegmentNodeName";
21234 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21235 0 : info->fieldType = GF_SG_VRML_SFSTRING;
21236 0 : info->far_ptr = & ((M_BodySegmentConnectionHint *) node)->firstSegmentNodeName;
21237 0 : return GF_OK;
21238 : case 1:
21239 0 : info->name = "secondSegmentNodeName";
21240 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21241 0 : info->fieldType = GF_SG_VRML_SFSTRING;
21242 0 : info->far_ptr = & ((M_BodySegmentConnectionHint *) node)->secondSegmentNodeName;
21243 0 : return GF_OK;
21244 : case 2:
21245 0 : info->name = "firstVertexIdList";
21246 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21247 0 : info->fieldType = GF_SG_VRML_MFINT32;
21248 0 : info->far_ptr = & ((M_BodySegmentConnectionHint *) node)->firstVertexIdList;
21249 0 : return GF_OK;
21250 : case 3:
21251 0 : info->name = "secondVertexIdList";
21252 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21253 0 : info->fieldType = GF_SG_VRML_MFINT32;
21254 0 : info->far_ptr = & ((M_BodySegmentConnectionHint *) node)->secondVertexIdList;
21255 0 : return GF_OK;
21256 : default:
21257 0 : return GF_BAD_PARAM;
21258 : }
21259 0 : }
21260 :
21261 :
21262 : static s32 BodySegmentConnectionHint_get_field_index_by_name(char *name)
21263 : {
21264 0 : if (!strcmp("firstSegmentNodeName", name)) return 0;
21265 0 : if (!strcmp("secondSegmentNodeName", name)) return 1;
21266 0 : if (!strcmp("firstVertexIdList", name)) return 2;
21267 0 : if (!strcmp("secondVertexIdList", name)) return 3;
21268 0 : return -1;
21269 0 : }
21270 : static Bool BodySegmentConnectionHint_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
21271 : {
21272 0 : switch (FieldIndex) {
21273 : case 2:
21274 0 : *AType = 0;
21275 0 : *QType = 0;
21276 0 : *b_min = FLT2FIX(0);
21277 0 : *b_max = FIX_MAX;
21278 0 : return 1;
21279 : case 3:
21280 0 : *AType = 0;
21281 0 : *QType = 0;
21282 0 : *b_min = FLT2FIX(0);
21283 0 : *b_max = FIX_MAX;
21284 0 : return 1;
21285 : default:
21286 0 : return 0;
21287 : }
21288 0 : }
21289 :
21290 :
21291 :
21292 : GF_Node *BodySegmentConnectionHint_Create()
21293 : {
21294 : M_BodySegmentConnectionHint *p;
21295 0 : GF_SAFEALLOC(p, M_BodySegmentConnectionHint);
21296 0 : if(!p) return NULL;
21297 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_BodySegmentConnectionHint);
21298 :
21299 : /*default field values*/
21300 0 : return (GF_Node *)p;
21301 0 : }
21302 :
21303 :
21304 : /*
21305 : DirectiveSound Node deletion
21306 : */
21307 :
21308 : static void DirectiveSound_Del(GF_Node *node)
21309 : {
21310 0 : M_DirectiveSound *p = (M_DirectiveSound *) node;
21311 0 : gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
21312 0 : gf_node_unregister((GF_Node *) p->perceptualParameters, (GF_Node *) p);
21313 0 : gf_sg_mffloat_del(p->directivity);
21314 0 : gf_sg_mffloat_del(p->angles);
21315 0 : gf_sg_mffloat_del(p->frequency);
21316 0 : gf_node_free((GF_Node *) p);
21317 0 : }
21318 :
21319 : static const u16 DirectiveSound_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
21320 : static const u16 DirectiveSound_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
21321 : static const u16 DirectiveSound_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
21322 : static const u16 DirectiveSound_Dyn2All[] = { 0, 1, 2};
21323 :
21324 : static u32 DirectiveSound_get_field_count(GF_Node *node, u8 IndexMode)
21325 : {
21326 0 : switch(IndexMode) {
21327 : case GF_SG_FIELD_CODING_IN:
21328 0 : return 7;
21329 : case GF_SG_FIELD_CODING_DEF:
21330 0 : return 13;
21331 : case GF_SG_FIELD_CODING_OUT:
21332 0 : return 7;
21333 : case GF_SG_FIELD_CODING_DYN:
21334 0 : return 3;
21335 : default:
21336 0 : return 13;
21337 : }
21338 0 : }
21339 :
21340 : static GF_Err DirectiveSound_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
21341 : {
21342 0 : switch(IndexMode) {
21343 : case GF_SG_FIELD_CODING_IN:
21344 0 : *allField = DirectiveSound_In2All[inField];
21345 0 : return GF_OK;
21346 : case GF_SG_FIELD_CODING_DEF:
21347 0 : *allField = DirectiveSound_Def2All[inField];
21348 0 : return GF_OK;
21349 : case GF_SG_FIELD_CODING_OUT:
21350 0 : *allField = DirectiveSound_Out2All[inField];
21351 0 : return GF_OK;
21352 : case GF_SG_FIELD_CODING_DYN:
21353 0 : *allField = DirectiveSound_Dyn2All[inField];
21354 0 : return GF_OK;
21355 : default:
21356 0 : return GF_BAD_PARAM;
21357 : }
21358 0 : }
21359 : static GF_Err DirectiveSound_get_field(GF_Node *node, GF_FieldInfo *info)
21360 : {
21361 0 : switch (info->fieldIndex) {
21362 : case 0:
21363 0 : info->name = "direction";
21364 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21365 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
21366 0 : info->far_ptr = & ((M_DirectiveSound *) node)->direction;
21367 0 : return GF_OK;
21368 : case 1:
21369 0 : info->name = "intensity";
21370 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21371 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21372 0 : info->far_ptr = & ((M_DirectiveSound *) node)->intensity;
21373 0 : return GF_OK;
21374 : case 2:
21375 0 : info->name = "location";
21376 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21377 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
21378 0 : info->far_ptr = & ((M_DirectiveSound *) node)->location;
21379 0 : return GF_OK;
21380 : case 3:
21381 0 : info->name = "source";
21382 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21383 0 : info->fieldType = GF_SG_VRML_SFNODE;
21384 0 : info->NDTtype = NDT_SFAudioNode;
21385 0 : info->far_ptr = & ((M_DirectiveSound *)node)->source;
21386 0 : return GF_OK;
21387 : case 4:
21388 0 : info->name = "perceptualParameters";
21389 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21390 0 : info->fieldType = GF_SG_VRML_SFNODE;
21391 0 : info->NDTtype = NDT_SFPerceptualParameterNode;
21392 0 : info->far_ptr = & ((M_DirectiveSound *)node)->perceptualParameters;
21393 0 : return GF_OK;
21394 : case 5:
21395 0 : info->name = "roomEffect";
21396 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21397 0 : info->fieldType = GF_SG_VRML_SFBOOL;
21398 0 : info->far_ptr = & ((M_DirectiveSound *) node)->roomEffect;
21399 0 : return GF_OK;
21400 : case 6:
21401 0 : info->name = "spatialize";
21402 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21403 0 : info->fieldType = GF_SG_VRML_SFBOOL;
21404 0 : info->far_ptr = & ((M_DirectiveSound *) node)->spatialize;
21405 0 : return GF_OK;
21406 : case 7:
21407 0 : info->name = "directivity";
21408 0 : info->eventType = GF_SG_EVENT_FIELD;
21409 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
21410 0 : info->far_ptr = & ((M_DirectiveSound *) node)->directivity;
21411 0 : return GF_OK;
21412 : case 8:
21413 0 : info->name = "angles";
21414 0 : info->eventType = GF_SG_EVENT_FIELD;
21415 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
21416 0 : info->far_ptr = & ((M_DirectiveSound *) node)->angles;
21417 0 : return GF_OK;
21418 : case 9:
21419 0 : info->name = "frequency";
21420 0 : info->eventType = GF_SG_EVENT_FIELD;
21421 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
21422 0 : info->far_ptr = & ((M_DirectiveSound *) node)->frequency;
21423 0 : return GF_OK;
21424 : case 10:
21425 0 : info->name = "speedOfSound";
21426 0 : info->eventType = GF_SG_EVENT_FIELD;
21427 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21428 0 : info->far_ptr = & ((M_DirectiveSound *) node)->speedOfSound;
21429 0 : return GF_OK;
21430 : case 11:
21431 0 : info->name = "distance";
21432 0 : info->eventType = GF_SG_EVENT_FIELD;
21433 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21434 0 : info->far_ptr = & ((M_DirectiveSound *) node)->distance;
21435 0 : return GF_OK;
21436 : case 12:
21437 0 : info->name = "useAirabs";
21438 0 : info->eventType = GF_SG_EVENT_FIELD;
21439 0 : info->fieldType = GF_SG_VRML_SFBOOL;
21440 0 : info->far_ptr = & ((M_DirectiveSound *) node)->useAirabs;
21441 0 : return GF_OK;
21442 : default:
21443 0 : return GF_BAD_PARAM;
21444 : }
21445 0 : }
21446 :
21447 :
21448 : static s32 DirectiveSound_get_field_index_by_name(char *name)
21449 : {
21450 0 : if (!strcmp("direction", name)) return 0;
21451 0 : if (!strcmp("intensity", name)) return 1;
21452 0 : if (!strcmp("location", name)) return 2;
21453 0 : if (!strcmp("source", name)) return 3;
21454 0 : if (!strcmp("perceptualParameters", name)) return 4;
21455 0 : if (!strcmp("roomEffect", name)) return 5;
21456 0 : if (!strcmp("spatialize", name)) return 6;
21457 0 : if (!strcmp("directivity", name)) return 7;
21458 0 : if (!strcmp("angles", name)) return 8;
21459 0 : if (!strcmp("frequency", name)) return 9;
21460 0 : if (!strcmp("speedOfSound", name)) return 10;
21461 0 : if (!strcmp("distance", name)) return 11;
21462 0 : if (!strcmp("useAirabs", name)) return 12;
21463 0 : return -1;
21464 0 : }
21465 : static Bool DirectiveSound_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
21466 : {
21467 0 : switch (FieldIndex) {
21468 : case 0:
21469 0 : *AType = 9;
21470 0 : *QType = 9;
21471 0 : *b_min = FIX_MIN;
21472 0 : *b_max = FIX_MAX;
21473 0 : return 1;
21474 : case 1:
21475 0 : *AType = 7;
21476 0 : *QType = 0;
21477 0 : *b_min = FLT2FIX(0);
21478 0 : *b_max = FIX_MAX;
21479 0 : return 1;
21480 : case 2:
21481 0 : *AType = 1;
21482 0 : *QType = 1;
21483 0 : *b_min = FIX_MIN;
21484 0 : *b_max = FIX_MAX;
21485 0 : return 1;
21486 : case 7:
21487 0 : *AType = 0;
21488 0 : *QType = 0;
21489 0 : *b_min = FIX_MIN;
21490 0 : *b_max = FIX_MAX;
21491 0 : return 1;
21492 : case 8:
21493 0 : *AType = 0;
21494 0 : *QType = 6;
21495 0 : *b_min = FLT2FIX(0);
21496 0 : *b_max = FLT2FIX(3.14159265);
21497 0 : return 1;
21498 : case 9:
21499 0 : *AType = 0;
21500 0 : *QType = 0;
21501 0 : *b_min = FLT2FIX(0);
21502 0 : *b_max = FIX_MAX;
21503 0 : return 1;
21504 : case 10:
21505 0 : *AType = 0;
21506 0 : *QType = 1;
21507 0 : *b_min = FLT2FIX(0);
21508 0 : *b_max = FIX_MAX;
21509 0 : return 1;
21510 : case 11:
21511 0 : *AType = 0;
21512 0 : *QType = 0;
21513 0 : *b_min = FLT2FIX(0);
21514 0 : *b_max = FIX_MAX;
21515 0 : return 1;
21516 : default:
21517 0 : return 0;
21518 : }
21519 0 : }
21520 :
21521 :
21522 :
21523 : GF_Node *DirectiveSound_Create()
21524 : {
21525 : M_DirectiveSound *p;
21526 0 : GF_SAFEALLOC(p, M_DirectiveSound);
21527 0 : if(!p) return NULL;
21528 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_DirectiveSound);
21529 :
21530 : /*default field values*/
21531 0 : p->direction.x = FLT2FIX(0);
21532 0 : p->direction.y = FLT2FIX(0);
21533 0 : p->direction.z = FLT2FIX(-1);
21534 0 : p->intensity = FLT2FIX(1);
21535 0 : p->location.x = FLT2FIX(0);
21536 0 : p->location.y = FLT2FIX(0);
21537 0 : p->location.z = FLT2FIX(0);
21538 0 : p->spatialize = 1;
21539 0 : p->directivity.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
21540 0 : p->directivity.count = 1;
21541 0 : p->directivity.vals[0] = FLT2FIX(1);
21542 0 : p->angles.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
21543 0 : p->angles.count = 1;
21544 0 : p->angles.vals[0] = FLT2FIX(1);
21545 0 : p->speedOfSound = FLT2FIX(340);
21546 0 : p->distance = FLT2FIX(100);
21547 0 : return (GF_Node *)p;
21548 0 : }
21549 :
21550 :
21551 : /*
21552 : Hierarchical3DMesh Node deletion
21553 : */
21554 :
21555 : static void Hierarchical3DMesh_Del(GF_Node *node)
21556 : {
21557 0 : M_Hierarchical3DMesh *p = (M_Hierarchical3DMesh *) node;
21558 0 : gf_sg_mfurl_del(p->url);
21559 0 : gf_node_free((GF_Node *) p);
21560 0 : }
21561 :
21562 : static const u16 Hierarchical3DMesh_Def2All[] = { 1, 2};
21563 : static const u16 Hierarchical3DMesh_In2All[] = { 0, 1};
21564 : static const u16 Hierarchical3DMesh_Out2All[] = { 1, 3};
21565 :
21566 : static u32 Hierarchical3DMesh_get_field_count(GF_Node *node, u8 IndexMode)
21567 : {
21568 0 : switch(IndexMode) {
21569 : case GF_SG_FIELD_CODING_IN:
21570 0 : return 2;
21571 : case GF_SG_FIELD_CODING_DEF:
21572 0 : return 2;
21573 : case GF_SG_FIELD_CODING_OUT:
21574 0 : return 2;
21575 : case GF_SG_FIELD_CODING_DYN:
21576 0 : return 0;
21577 : default:
21578 0 : return 4;
21579 : }
21580 0 : }
21581 :
21582 : static GF_Err Hierarchical3DMesh_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
21583 : {
21584 0 : switch(IndexMode) {
21585 : case GF_SG_FIELD_CODING_IN:
21586 0 : *allField = Hierarchical3DMesh_In2All[inField];
21587 0 : return GF_OK;
21588 : case GF_SG_FIELD_CODING_DEF:
21589 0 : *allField = Hierarchical3DMesh_Def2All[inField];
21590 0 : return GF_OK;
21591 : case GF_SG_FIELD_CODING_OUT:
21592 0 : *allField = Hierarchical3DMesh_Out2All[inField];
21593 0 : return GF_OK;
21594 : default:
21595 0 : return GF_BAD_PARAM;
21596 : }
21597 0 : }
21598 : static GF_Err Hierarchical3DMesh_get_field(GF_Node *node, GF_FieldInfo *info)
21599 : {
21600 0 : switch (info->fieldIndex) {
21601 : case 0:
21602 0 : info->name = "triangleBudget";
21603 0 : info->eventType = GF_SG_EVENT_IN;
21604 0 : info->on_event_in = ((M_Hierarchical3DMesh *)node)->on_triangleBudget;
21605 0 : info->fieldType = GF_SG_VRML_SFINT32;
21606 0 : info->far_ptr = & ((M_Hierarchical3DMesh *) node)->triangleBudget;
21607 0 : return GF_OK;
21608 : case 1:
21609 0 : info->name = "level";
21610 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21611 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21612 0 : info->far_ptr = & ((M_Hierarchical3DMesh *) node)->level;
21613 0 : return GF_OK;
21614 : case 2:
21615 0 : info->name = "url";
21616 0 : info->eventType = GF_SG_EVENT_FIELD;
21617 0 : info->fieldType = GF_SG_VRML_MFURL;
21618 0 : info->far_ptr = & ((M_Hierarchical3DMesh *) node)->url;
21619 0 : return GF_OK;
21620 : case 3:
21621 0 : info->name = "doneLoading";
21622 0 : info->eventType = GF_SG_EVENT_OUT;
21623 0 : info->fieldType = GF_SG_VRML_SFBOOL;
21624 0 : info->far_ptr = & ((M_Hierarchical3DMesh *) node)->doneLoading;
21625 0 : return GF_OK;
21626 : default:
21627 0 : return GF_BAD_PARAM;
21628 : }
21629 0 : }
21630 :
21631 :
21632 : static s32 Hierarchical3DMesh_get_field_index_by_name(char *name)
21633 : {
21634 0 : if (!strcmp("triangleBudget", name)) return 0;
21635 0 : if (!strcmp("level", name)) return 1;
21636 0 : if (!strcmp("url", name)) return 2;
21637 0 : if (!strcmp("doneLoading", name)) return 3;
21638 0 : return -1;
21639 0 : }
21640 : static Bool Hierarchical3DMesh_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
21641 : {
21642 0 : switch (FieldIndex) {
21643 : case 0:
21644 0 : *AType = 0;
21645 0 : *QType = 0;
21646 0 : *b_min = FLT2FIX(-1);
21647 0 : *b_max = FIX_MAX;
21648 0 : return 1;
21649 : case 1:
21650 0 : *AType = 0;
21651 0 : *QType = 0;
21652 0 : *b_min = FLT2FIX(-1);
21653 0 : *b_max = FIX_MAX;
21654 0 : return 1;
21655 : default:
21656 0 : return 0;
21657 : }
21658 0 : }
21659 :
21660 :
21661 :
21662 : GF_Node *Hierarchical3DMesh_Create()
21663 : {
21664 : M_Hierarchical3DMesh *p;
21665 0 : GF_SAFEALLOC(p, M_Hierarchical3DMesh);
21666 0 : if(!p) return NULL;
21667 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Hierarchical3DMesh);
21668 :
21669 : /*default field values*/
21670 0 : p->level = FLT2FIX(1);
21671 0 : return (GF_Node *)p;
21672 0 : }
21673 :
21674 :
21675 : /*
21676 : MaterialKey Node deletion
21677 : */
21678 :
21679 : static void MaterialKey_Del(GF_Node *node)
21680 : {
21681 36 : M_MaterialKey *p = (M_MaterialKey *) node;
21682 18 : gf_node_free((GF_Node *) p);
21683 18 : }
21684 :
21685 : static const u16 MaterialKey_Def2All[] = { 0, 1, 2, 3, 4, 5};
21686 : static const u16 MaterialKey_In2All[] = { 0, 1, 2, 3, 4, 5};
21687 : static const u16 MaterialKey_Out2All[] = { 0, 1, 2, 3, 4, 5};
21688 : static const u16 MaterialKey_Dyn2All[] = { 2, 3, 4, 5};
21689 :
21690 : static u32 MaterialKey_get_field_count(GF_Node *node, u8 IndexMode)
21691 : {
21692 32 : switch(IndexMode) {
21693 : case GF_SG_FIELD_CODING_IN:
21694 0 : return 6;
21695 : case GF_SG_FIELD_CODING_DEF:
21696 9 : return 6;
21697 : case GF_SG_FIELD_CODING_OUT:
21698 0 : return 6;
21699 : case GF_SG_FIELD_CODING_DYN:
21700 0 : return 4;
21701 : default:
21702 7 : return 6;
21703 : }
21704 16 : }
21705 :
21706 : static GF_Err MaterialKey_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
21707 : {
21708 54 : switch(IndexMode) {
21709 : case GF_SG_FIELD_CODING_IN:
21710 0 : *allField = MaterialKey_In2All[inField];
21711 0 : return GF_OK;
21712 : case GF_SG_FIELD_CODING_DEF:
21713 27 : *allField = MaterialKey_Def2All[inField];
21714 27 : return GF_OK;
21715 : case GF_SG_FIELD_CODING_OUT:
21716 0 : *allField = MaterialKey_Out2All[inField];
21717 0 : return GF_OK;
21718 : case GF_SG_FIELD_CODING_DYN:
21719 0 : *allField = MaterialKey_Dyn2All[inField];
21720 0 : return GF_OK;
21721 : default:
21722 0 : return GF_BAD_PARAM;
21723 : }
21724 27 : }
21725 : static GF_Err MaterialKey_get_field(GF_Node *node, GF_FieldInfo *info)
21726 : {
21727 314 : switch (info->fieldIndex) {
21728 : case 0:
21729 20 : info->name = "isKeyed";
21730 20 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21731 20 : info->fieldType = GF_SG_VRML_SFBOOL;
21732 20 : info->far_ptr = & ((M_MaterialKey *) node)->isKeyed;
21733 20 : return GF_OK;
21734 : case 1:
21735 18 : info->name = "isRGB";
21736 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21737 18 : info->fieldType = GF_SG_VRML_SFBOOL;
21738 18 : info->far_ptr = & ((M_MaterialKey *) node)->isRGB;
21739 18 : return GF_OK;
21740 : case 2:
21741 33 : info->name = "keyColor";
21742 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21743 33 : info->fieldType = GF_SG_VRML_SFCOLOR;
21744 33 : info->far_ptr = & ((M_MaterialKey *) node)->keyColor;
21745 33 : return GF_OK;
21746 : case 3:
21747 33 : info->name = "lowThreshold";
21748 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21749 33 : info->fieldType = GF_SG_VRML_SFFLOAT;
21750 33 : info->far_ptr = & ((M_MaterialKey *) node)->lowThreshold;
21751 33 : return GF_OK;
21752 : case 4:
21753 33 : info->name = "highThreshold";
21754 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21755 33 : info->fieldType = GF_SG_VRML_SFFLOAT;
21756 33 : info->far_ptr = & ((M_MaterialKey *) node)->highThreshold;
21757 33 : return GF_OK;
21758 : case 5:
21759 20 : info->name = "transparency";
21760 20 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21761 20 : info->fieldType = GF_SG_VRML_SFFLOAT;
21762 20 : info->far_ptr = & ((M_MaterialKey *) node)->transparency;
21763 20 : return GF_OK;
21764 : default:
21765 0 : return GF_BAD_PARAM;
21766 : }
21767 157 : }
21768 :
21769 :
21770 : static s32 MaterialKey_get_field_index_by_name(char *name)
21771 : {
21772 34 : if (!strcmp("isKeyed", name)) return 0;
21773 14 : if (!strcmp("isRGB", name)) return 1;
21774 18 : if (!strcmp("keyColor", name)) return 2;
21775 14 : if (!strcmp("lowThreshold", name)) return 3;
21776 10 : if (!strcmp("highThreshold", name)) return 4;
21777 4 : if (!strcmp("transparency", name)) return 5;
21778 0 : return -1;
21779 16 : }
21780 : static Bool MaterialKey_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
21781 : {
21782 0 : switch (FieldIndex) {
21783 : case 2:
21784 0 : *AType = 4;
21785 0 : *QType = 4;
21786 0 : *b_min = FLT2FIX(0);
21787 0 : *b_max = FLT2FIX(1);
21788 0 : return 1;
21789 : case 3:
21790 0 : *AType = 8;
21791 0 : *QType = 4;
21792 0 : *b_min = FLT2FIX(0);
21793 0 : *b_max = FLT2FIX(1);
21794 0 : return 1;
21795 : case 4:
21796 0 : *AType = 8;
21797 0 : *QType = 4;
21798 0 : *b_min = FLT2FIX(0);
21799 0 : *b_max = FLT2FIX(1);
21800 0 : return 1;
21801 : case 5:
21802 0 : *AType = 8;
21803 0 : *QType = 4;
21804 0 : *b_min = FLT2FIX(0);
21805 0 : *b_max = FLT2FIX(1);
21806 0 : return 1;
21807 : default:
21808 0 : return 0;
21809 : }
21810 0 : }
21811 :
21812 :
21813 :
21814 : GF_Node *MaterialKey_Create()
21815 : {
21816 : M_MaterialKey *p;
21817 54 : GF_SAFEALLOC(p, M_MaterialKey);
21818 18 : if(!p) return NULL;
21819 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MaterialKey);
21820 :
21821 : /*default field values*/
21822 18 : p->isKeyed = 1;
21823 18 : p->isRGB = 1;
21824 18 : p->keyColor.red = FLT2FIX(0);
21825 18 : p->keyColor.green = FLT2FIX(0);
21826 18 : p->keyColor.blue = FLT2FIX(0);
21827 18 : p->lowThreshold = FLT2FIX(0);
21828 18 : p->highThreshold = FLT2FIX(0);
21829 18 : p->transparency = FLT2FIX(0);
21830 18 : return (GF_Node *)p;
21831 18 : }
21832 :
21833 :
21834 : /*
21835 : PerceptualParameters Node deletion
21836 : */
21837 :
21838 : static void PerceptualParameters_Del(GF_Node *node)
21839 : {
21840 0 : M_PerceptualParameters *p = (M_PerceptualParameters *) node;
21841 0 : gf_sg_mffloat_del(p->omniDirectivity);
21842 0 : gf_sg_mffloat_del(p->directFilterGains);
21843 0 : gf_sg_mffloat_del(p->inputFilterGains);
21844 0 : gf_node_free((GF_Node *) p);
21845 0 : }
21846 :
21847 : static const u16 PerceptualParameters_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
21848 : static const u16 PerceptualParameters_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
21849 : static const u16 PerceptualParameters_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
21850 : static const u16 PerceptualParameters_Dyn2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
21851 :
21852 : static u32 PerceptualParameters_get_field_count(GF_Node *node, u8 IndexMode)
21853 : {
21854 0 : switch(IndexMode) {
21855 : case GF_SG_FIELD_CODING_IN:
21856 0 : return 19;
21857 : case GF_SG_FIELD_CODING_DEF:
21858 0 : return 19;
21859 : case GF_SG_FIELD_CODING_OUT:
21860 0 : return 19;
21861 : case GF_SG_FIELD_CODING_DYN:
21862 0 : return 15;
21863 : default:
21864 0 : return 19;
21865 : }
21866 0 : }
21867 :
21868 : static GF_Err PerceptualParameters_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
21869 : {
21870 0 : switch(IndexMode) {
21871 : case GF_SG_FIELD_CODING_IN:
21872 0 : *allField = PerceptualParameters_In2All[inField];
21873 0 : return GF_OK;
21874 : case GF_SG_FIELD_CODING_DEF:
21875 0 : *allField = PerceptualParameters_Def2All[inField];
21876 0 : return GF_OK;
21877 : case GF_SG_FIELD_CODING_OUT:
21878 0 : *allField = PerceptualParameters_Out2All[inField];
21879 0 : return GF_OK;
21880 : case GF_SG_FIELD_CODING_DYN:
21881 0 : *allField = PerceptualParameters_Dyn2All[inField];
21882 0 : return GF_OK;
21883 : default:
21884 0 : return GF_BAD_PARAM;
21885 : }
21886 0 : }
21887 : static GF_Err PerceptualParameters_get_field(GF_Node *node, GF_FieldInfo *info)
21888 : {
21889 0 : switch (info->fieldIndex) {
21890 : case 0:
21891 0 : info->name = "sourcePresence";
21892 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21893 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21894 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->sourcePresence;
21895 0 : return GF_OK;
21896 : case 1:
21897 0 : info->name = "sourceWarmth";
21898 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21899 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21900 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->sourceWarmth;
21901 0 : return GF_OK;
21902 : case 2:
21903 0 : info->name = "sourceBrilliance";
21904 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21905 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21906 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->sourceBrilliance;
21907 0 : return GF_OK;
21908 : case 3:
21909 0 : info->name = "roomPresence";
21910 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21911 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21912 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->roomPresence;
21913 0 : return GF_OK;
21914 : case 4:
21915 0 : info->name = "runningReverberance";
21916 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21917 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21918 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->runningReverberance;
21919 0 : return GF_OK;
21920 : case 5:
21921 0 : info->name = "envelopment";
21922 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21923 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21924 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->envelopment;
21925 0 : return GF_OK;
21926 : case 6:
21927 0 : info->name = "lateReverberance";
21928 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21929 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21930 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->lateReverberance;
21931 0 : return GF_OK;
21932 : case 7:
21933 0 : info->name = "heavyness";
21934 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21935 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21936 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->heavyness;
21937 0 : return GF_OK;
21938 : case 8:
21939 0 : info->name = "liveness";
21940 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21941 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21942 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->liveness;
21943 0 : return GF_OK;
21944 : case 9:
21945 0 : info->name = "omniDirectivity";
21946 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21947 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
21948 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->omniDirectivity;
21949 0 : return GF_OK;
21950 : case 10:
21951 0 : info->name = "directFilterGains";
21952 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21953 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
21954 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->directFilterGains;
21955 0 : return GF_OK;
21956 : case 11:
21957 0 : info->name = "inputFilterGains";
21958 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21959 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
21960 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->inputFilterGains;
21961 0 : return GF_OK;
21962 : case 12:
21963 0 : info->name = "refDistance";
21964 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21965 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21966 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->refDistance;
21967 0 : return GF_OK;
21968 : case 13:
21969 0 : info->name = "freqLow";
21970 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21971 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21972 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->freqLow;
21973 0 : return GF_OK;
21974 : case 14:
21975 0 : info->name = "freqHigh";
21976 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21977 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
21978 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->freqHigh;
21979 0 : return GF_OK;
21980 : case 15:
21981 0 : info->name = "timeLimit1";
21982 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21983 0 : info->fieldType = GF_SG_VRML_SFTIME;
21984 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->timeLimit1;
21985 0 : return GF_OK;
21986 : case 16:
21987 0 : info->name = "timeLimit2";
21988 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21989 0 : info->fieldType = GF_SG_VRML_SFTIME;
21990 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->timeLimit2;
21991 0 : return GF_OK;
21992 : case 17:
21993 0 : info->name = "timeLimit3";
21994 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21995 0 : info->fieldType = GF_SG_VRML_SFTIME;
21996 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->timeLimit3;
21997 0 : return GF_OK;
21998 : case 18:
21999 0 : info->name = "modalDensity";
22000 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22001 0 : info->fieldType = GF_SG_VRML_SFTIME;
22002 0 : info->far_ptr = & ((M_PerceptualParameters *) node)->modalDensity;
22003 0 : return GF_OK;
22004 : default:
22005 0 : return GF_BAD_PARAM;
22006 : }
22007 0 : }
22008 :
22009 :
22010 : static s32 PerceptualParameters_get_field_index_by_name(char *name)
22011 : {
22012 0 : if (!strcmp("sourcePresence", name)) return 0;
22013 0 : if (!strcmp("sourceWarmth", name)) return 1;
22014 0 : if (!strcmp("sourceBrilliance", name)) return 2;
22015 0 : if (!strcmp("roomPresence", name)) return 3;
22016 0 : if (!strcmp("runningReverberance", name)) return 4;
22017 0 : if (!strcmp("envelopment", name)) return 5;
22018 0 : if (!strcmp("lateReverberance", name)) return 6;
22019 0 : if (!strcmp("heavyness", name)) return 7;
22020 0 : if (!strcmp("liveness", name)) return 8;
22021 0 : if (!strcmp("omniDirectivity", name)) return 9;
22022 0 : if (!strcmp("directFilterGains", name)) return 10;
22023 0 : if (!strcmp("inputFilterGains", name)) return 11;
22024 0 : if (!strcmp("refDistance", name)) return 12;
22025 0 : if (!strcmp("freqLow", name)) return 13;
22026 0 : if (!strcmp("freqHigh", name)) return 14;
22027 0 : if (!strcmp("timeLimit1", name)) return 15;
22028 0 : if (!strcmp("timeLimit2", name)) return 16;
22029 0 : if (!strcmp("timeLimit3", name)) return 17;
22030 0 : if (!strcmp("modalDensity", name)) return 18;
22031 0 : return -1;
22032 0 : }
22033 : static Bool PerceptualParameters_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
22034 : {
22035 0 : switch (FieldIndex) {
22036 : case 0:
22037 0 : *AType = 7;
22038 0 : *QType = 0;
22039 0 : *b_min = FIX_MIN;
22040 0 : *b_max = FIX_MAX;
22041 0 : return 1;
22042 : case 1:
22043 0 : *AType = 7;
22044 0 : *QType = 0;
22045 0 : *b_min = FIX_MIN;
22046 0 : *b_max = FIX_MAX;
22047 0 : return 1;
22048 : case 2:
22049 0 : *AType = 7;
22050 0 : *QType = 0;
22051 0 : *b_min = FIX_MIN;
22052 0 : *b_max = FIX_MAX;
22053 0 : return 1;
22054 : case 3:
22055 0 : *AType = 7;
22056 0 : *QType = 0;
22057 0 : *b_min = FIX_MIN;
22058 0 : *b_max = FIX_MAX;
22059 0 : return 1;
22060 : case 4:
22061 0 : *AType = 7;
22062 0 : *QType = 0;
22063 0 : *b_min = FIX_MIN;
22064 0 : *b_max = FIX_MAX;
22065 0 : return 1;
22066 : case 5:
22067 0 : *AType = 7;
22068 0 : *QType = 0;
22069 0 : *b_min = FIX_MIN;
22070 0 : *b_max = FIX_MAX;
22071 0 : return 1;
22072 : case 6:
22073 0 : *AType = 7;
22074 0 : *QType = 0;
22075 0 : *b_min = FIX_MIN;
22076 0 : *b_max = FIX_MAX;
22077 0 : return 1;
22078 : case 7:
22079 0 : *AType = 7;
22080 0 : *QType = 0;
22081 0 : *b_min = FIX_MIN;
22082 0 : *b_max = FIX_MAX;
22083 0 : return 1;
22084 : case 8:
22085 0 : *AType = 7;
22086 0 : *QType = 0;
22087 0 : *b_min = FIX_MIN;
22088 0 : *b_max = FIX_MAX;
22089 0 : return 1;
22090 : case 9:
22091 0 : *AType = 7;
22092 0 : *QType = 0;
22093 0 : *b_min = FIX_MIN;
22094 0 : *b_max = FIX_MAX;
22095 0 : return 1;
22096 : case 10:
22097 0 : *AType = 7;
22098 0 : *QType = 0;
22099 0 : *b_min = FIX_MIN;
22100 0 : *b_max = FIX_MAX;
22101 0 : return 1;
22102 : case 11:
22103 0 : *AType = 7;
22104 0 : *QType = 0;
22105 0 : *b_min = FIX_MIN;
22106 0 : *b_max = FIX_MAX;
22107 0 : return 1;
22108 : case 12:
22109 0 : *AType = 7;
22110 0 : *QType = 0;
22111 0 : *b_min = FIX_MIN;
22112 0 : *b_max = FIX_MAX;
22113 0 : return 1;
22114 : case 13:
22115 0 : *AType = 7;
22116 0 : *QType = 0;
22117 0 : *b_min = FIX_MIN;
22118 0 : *b_max = FIX_MAX;
22119 0 : return 1;
22120 : case 14:
22121 0 : *AType = 7;
22122 0 : *QType = 0;
22123 0 : *b_min = FIX_MIN;
22124 0 : *b_max = FIX_MAX;
22125 0 : return 1;
22126 : case 15:
22127 0 : *AType = 0;
22128 0 : *QType = 0;
22129 0 : *b_min = FIX_MIN;
22130 0 : *b_max = FIX_MAX;
22131 0 : return 1;
22132 : case 16:
22133 0 : *AType = 0;
22134 0 : *QType = 0;
22135 0 : *b_min = FIX_MIN;
22136 0 : *b_max = FIX_MAX;
22137 0 : return 1;
22138 : case 17:
22139 0 : *AType = 0;
22140 0 : *QType = 0;
22141 0 : *b_min = FIX_MIN;
22142 0 : *b_max = FIX_MAX;
22143 0 : return 1;
22144 : case 18:
22145 0 : *AType = 0;
22146 0 : *QType = 0;
22147 0 : *b_min = FIX_MIN;
22148 0 : *b_max = FIX_MAX;
22149 0 : return 1;
22150 : default:
22151 0 : return 0;
22152 : }
22153 0 : }
22154 :
22155 :
22156 :
22157 : GF_Node *PerceptualParameters_Create()
22158 : {
22159 : M_PerceptualParameters *p;
22160 0 : GF_SAFEALLOC(p, M_PerceptualParameters);
22161 0 : if(!p) return NULL;
22162 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PerceptualParameters);
22163 :
22164 : /*default field values*/
22165 0 : p->sourcePresence = FLT2FIX(1.0);
22166 0 : p->sourceWarmth = FLT2FIX(1.0);
22167 0 : p->sourceBrilliance = FLT2FIX(1.0);
22168 0 : p->roomPresence = FLT2FIX(1.0);
22169 0 : p->runningReverberance = FLT2FIX(1.0);
22170 0 : p->envelopment = FLT2FIX(0.0);
22171 0 : p->lateReverberance = FLT2FIX(1.0);
22172 0 : p->heavyness = FLT2FIX(1.0);
22173 0 : p->liveness = FLT2FIX(1.0);
22174 0 : p->omniDirectivity.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
22175 0 : p->omniDirectivity.count = 1;
22176 0 : p->omniDirectivity.vals[0] = FLT2FIX(1.0);
22177 0 : p->directFilterGains.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*3);
22178 0 : p->directFilterGains.count = 3;
22179 0 : p->directFilterGains.vals[0] = FLT2FIX(1.0);
22180 0 : p->directFilterGains.vals[1] = FLT2FIX(1.0);
22181 0 : p->directFilterGains.vals[2] = FLT2FIX(1.0);
22182 0 : p->inputFilterGains.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*3);
22183 0 : p->inputFilterGains.count = 3;
22184 0 : p->inputFilterGains.vals[0] = FLT2FIX(1.0);
22185 0 : p->inputFilterGains.vals[1] = FLT2FIX(1.0);
22186 0 : p->inputFilterGains.vals[2] = FLT2FIX(1.0);
22187 0 : p->refDistance = FLT2FIX(1.0);
22188 0 : p->freqLow = FLT2FIX(250.0);
22189 0 : p->freqHigh = FLT2FIX(4000.0);
22190 0 : p->timeLimit1 = 0.02;
22191 0 : p->timeLimit2 = 0.04;
22192 0 : p->timeLimit3 = 0.1;
22193 0 : p->modalDensity = 0.8;
22194 0 : return (GF_Node *)p;
22195 0 : }
22196 :
22197 :
22198 : /*
22199 : TemporalTransform Node deletion
22200 : */
22201 :
22202 : static void TemporalTransform_Del(GF_Node *node)
22203 : {
22204 0 : M_TemporalTransform *p = (M_TemporalTransform *) node;
22205 0 : gf_sg_mfurl_del(p->url);
22206 0 : gf_sg_mfint32_del(p->stretchMode);
22207 0 : gf_sg_mfint32_del(p->shrinkMode);
22208 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
22209 0 : gf_node_free((GF_Node *) p);
22210 0 : }
22211 :
22212 : static const u16 TemporalTransform_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
22213 : static const u16 TemporalTransform_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
22214 : static const u16 TemporalTransform_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
22215 : static const u16 TemporalTransform_Dyn2All[] = { 7, 8};
22216 :
22217 : static u32 TemporalTransform_get_field_count(GF_Node *node, u8 IndexMode)
22218 : {
22219 0 : switch(IndexMode) {
22220 : case GF_SG_FIELD_CODING_IN:
22221 0 : return 12;
22222 : case GF_SG_FIELD_CODING_DEF:
22223 0 : return 10;
22224 : case GF_SG_FIELD_CODING_OUT:
22225 0 : return 11;
22226 : case GF_SG_FIELD_CODING_DYN:
22227 0 : return 2;
22228 : default:
22229 0 : return 13;
22230 : }
22231 0 : }
22232 :
22233 : static GF_Err TemporalTransform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
22234 : {
22235 0 : switch(IndexMode) {
22236 : case GF_SG_FIELD_CODING_IN:
22237 0 : *allField = TemporalTransform_In2All[inField];
22238 0 : return GF_OK;
22239 : case GF_SG_FIELD_CODING_DEF:
22240 0 : *allField = TemporalTransform_Def2All[inField];
22241 0 : return GF_OK;
22242 : case GF_SG_FIELD_CODING_OUT:
22243 0 : *allField = TemporalTransform_Out2All[inField];
22244 0 : return GF_OK;
22245 : case GF_SG_FIELD_CODING_DYN:
22246 0 : *allField = TemporalTransform_Dyn2All[inField];
22247 0 : return GF_OK;
22248 : default:
22249 0 : return GF_BAD_PARAM;
22250 : }
22251 0 : }
22252 : static GF_Err TemporalTransform_get_field(GF_Node *node, GF_FieldInfo *info)
22253 : {
22254 0 : switch (info->fieldIndex) {
22255 : case 0:
22256 0 : info->name = "addChildren";
22257 0 : info->eventType = GF_SG_EVENT_IN;
22258 0 : info->on_event_in = ((M_TemporalTransform *)node)->on_addChildren;
22259 0 : info->fieldType = GF_SG_VRML_MFNODE;
22260 0 : info->NDTtype = NDT_SF3DNode;
22261 0 : info->far_ptr = & ((M_TemporalTransform *)node)->addChildren;
22262 0 : return GF_OK;
22263 : case 1:
22264 0 : info->name = "removeChildren";
22265 0 : info->eventType = GF_SG_EVENT_IN;
22266 0 : info->on_event_in = ((M_TemporalTransform *)node)->on_removeChildren;
22267 0 : info->fieldType = GF_SG_VRML_MFNODE;
22268 0 : info->NDTtype = NDT_SF3DNode;
22269 0 : info->far_ptr = & ((M_TemporalTransform *)node)->removeChildren;
22270 0 : return GF_OK;
22271 : case 2:
22272 0 : info->name = "children";
22273 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22274 0 : info->fieldType = GF_SG_VRML_MFNODE;
22275 0 : info->NDTtype = NDT_SF3DNode;
22276 0 : info->far_ptr = & ((M_TemporalTransform *)node)->children;
22277 0 : return GF_OK;
22278 : case 3:
22279 0 : info->name = "url";
22280 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22281 0 : info->fieldType = GF_SG_VRML_MFURL;
22282 0 : info->far_ptr = & ((M_TemporalTransform *) node)->url;
22283 0 : return GF_OK;
22284 : case 4:
22285 0 : info->name = "startTime";
22286 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22287 0 : info->fieldType = GF_SG_VRML_SFTIME;
22288 0 : info->far_ptr = & ((M_TemporalTransform *) node)->startTime;
22289 0 : return GF_OK;
22290 : case 5:
22291 0 : info->name = "optimalDuration";
22292 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22293 0 : info->fieldType = GF_SG_VRML_SFTIME;
22294 0 : info->far_ptr = & ((M_TemporalTransform *) node)->optimalDuration;
22295 0 : return GF_OK;
22296 : case 6:
22297 0 : info->name = "active";
22298 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22299 0 : info->fieldType = GF_SG_VRML_SFBOOL;
22300 0 : info->far_ptr = & ((M_TemporalTransform *) node)->active;
22301 0 : return GF_OK;
22302 : case 7:
22303 0 : info->name = "speed";
22304 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22305 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
22306 0 : info->far_ptr = & ((M_TemporalTransform *) node)->speed;
22307 0 : return GF_OK;
22308 : case 8:
22309 0 : info->name = "scalability";
22310 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22311 0 : info->fieldType = GF_SG_VRML_SFVEC2F;
22312 0 : info->far_ptr = & ((M_TemporalTransform *) node)->scalability;
22313 0 : return GF_OK;
22314 : case 9:
22315 0 : info->name = "stretchMode";
22316 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22317 0 : info->fieldType = GF_SG_VRML_MFINT32;
22318 0 : info->far_ptr = & ((M_TemporalTransform *) node)->stretchMode;
22319 0 : return GF_OK;
22320 : case 10:
22321 0 : info->name = "shrinkMode";
22322 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22323 0 : info->fieldType = GF_SG_VRML_MFINT32;
22324 0 : info->far_ptr = & ((M_TemporalTransform *) node)->shrinkMode;
22325 0 : return GF_OK;
22326 : case 11:
22327 0 : info->name = "maxDelay";
22328 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22329 0 : info->fieldType = GF_SG_VRML_SFTIME;
22330 0 : info->far_ptr = & ((M_TemporalTransform *) node)->maxDelay;
22331 0 : return GF_OK;
22332 : case 12:
22333 0 : info->name = "actualDuration";
22334 0 : info->eventType = GF_SG_EVENT_OUT;
22335 0 : info->fieldType = GF_SG_VRML_SFTIME;
22336 0 : info->far_ptr = & ((M_TemporalTransform *) node)->actualDuration;
22337 0 : return GF_OK;
22338 : default:
22339 0 : return GF_BAD_PARAM;
22340 : }
22341 0 : }
22342 :
22343 :
22344 : static s32 TemporalTransform_get_field_index_by_name(char *name)
22345 : {
22346 0 : if (!strcmp("addChildren", name)) return 0;
22347 0 : if (!strcmp("removeChildren", name)) return 1;
22348 0 : if (!strcmp("children", name)) return 2;
22349 0 : if (!strcmp("url", name)) return 3;
22350 0 : if (!strcmp("startTime", name)) return 4;
22351 0 : if (!strcmp("optimalDuration", name)) return 5;
22352 0 : if (!strcmp("active", name)) return 6;
22353 0 : if (!strcmp("speed", name)) return 7;
22354 0 : if (!strcmp("scalability", name)) return 8;
22355 0 : if (!strcmp("stretchMode", name)) return 9;
22356 0 : if (!strcmp("shrinkMode", name)) return 10;
22357 0 : if (!strcmp("maxDelay", name)) return 11;
22358 0 : if (!strcmp("actualDuration", name)) return 12;
22359 0 : return -1;
22360 0 : }
22361 : static Bool TemporalTransform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
22362 : {
22363 0 : switch (FieldIndex) {
22364 : case 7:
22365 0 : *AType = 7;
22366 0 : *QType = 0;
22367 0 : *b_min = FIX_MIN;
22368 0 : *b_max = FIX_MAX;
22369 0 : return 1;
22370 : case 8:
22371 0 : *AType = 12;
22372 0 : *QType = 12;
22373 0 : *b_min = FLT2FIX(-1);
22374 0 : *b_max = FIX_MAX;
22375 0 : return 1;
22376 : case 9:
22377 0 : *AType = 0;
22378 0 : *QType = 13;
22379 0 : *QT13_bits = 2;
22380 0 : *b_min = FLT2FIX(0);
22381 0 : *b_max = FLT2FIX(2);
22382 0 : return 1;
22383 : case 10:
22384 0 : *AType = 0;
22385 0 : *QType = 13;
22386 0 : *QT13_bits = 1;
22387 0 : *b_min = FLT2FIX(0);
22388 0 : *b_max = FLT2FIX(1);
22389 0 : return 1;
22390 : default:
22391 0 : return 0;
22392 : }
22393 0 : }
22394 :
22395 :
22396 :
22397 : GF_Node *TemporalTransform_Create()
22398 : {
22399 : M_TemporalTransform *p;
22400 0 : GF_SAFEALLOC(p, M_TemporalTransform);
22401 0 : if(!p) return NULL;
22402 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TemporalTransform);
22403 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
22404 :
22405 : /*default field values*/
22406 0 : p->startTime = -1.0;
22407 0 : p->optimalDuration = -1.0;
22408 0 : p->speed = FLT2FIX(1.0);
22409 0 : p->scalability.x = FLT2FIX(1.0);
22410 0 : p->scalability.y = FLT2FIX(1.0);
22411 0 : p->stretchMode.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
22412 0 : p->stretchMode.count = 1;
22413 0 : p->stretchMode.vals[0] = 0;
22414 0 : p->shrinkMode.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
22415 0 : p->shrinkMode.count = 1;
22416 0 : p->shrinkMode.vals[0] = 0;
22417 0 : p->maxDelay = 0;
22418 0 : return (GF_Node *)p;
22419 0 : }
22420 :
22421 :
22422 : /*
22423 : TemporalGroup Node deletion
22424 : */
22425 :
22426 : static void TemporalGroup_Del(GF_Node *node)
22427 : {
22428 0 : M_TemporalGroup *p = (M_TemporalGroup *) node;
22429 0 : gf_sg_mffloat_del(p->priority);
22430 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
22431 0 : gf_node_free((GF_Node *) p);
22432 0 : }
22433 :
22434 : static const u16 TemporalGroup_Def2All[] = { 2, 3, 4, 5, 6};
22435 : static const u16 TemporalGroup_In2All[] = { 0, 1, 2, 6};
22436 : static const u16 TemporalGroup_Out2All[] = { 2, 6, 7, 8};
22437 :
22438 : static u32 TemporalGroup_get_field_count(GF_Node *node, u8 IndexMode)
22439 : {
22440 0 : switch(IndexMode) {
22441 : case GF_SG_FIELD_CODING_IN:
22442 0 : return 4;
22443 : case GF_SG_FIELD_CODING_DEF:
22444 0 : return 5;
22445 : case GF_SG_FIELD_CODING_OUT:
22446 0 : return 4;
22447 : case GF_SG_FIELD_CODING_DYN:
22448 0 : return 0;
22449 : default:
22450 0 : return 9;
22451 : }
22452 0 : }
22453 :
22454 : static GF_Err TemporalGroup_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
22455 : {
22456 0 : switch(IndexMode) {
22457 : case GF_SG_FIELD_CODING_IN:
22458 0 : *allField = TemporalGroup_In2All[inField];
22459 0 : return GF_OK;
22460 : case GF_SG_FIELD_CODING_DEF:
22461 0 : *allField = TemporalGroup_Def2All[inField];
22462 0 : return GF_OK;
22463 : case GF_SG_FIELD_CODING_OUT:
22464 0 : *allField = TemporalGroup_Out2All[inField];
22465 0 : return GF_OK;
22466 : default:
22467 0 : return GF_BAD_PARAM;
22468 : }
22469 0 : }
22470 : static GF_Err TemporalGroup_get_field(GF_Node *node, GF_FieldInfo *info)
22471 : {
22472 0 : switch (info->fieldIndex) {
22473 : case 0:
22474 0 : info->name = "addChildren";
22475 0 : info->eventType = GF_SG_EVENT_IN;
22476 0 : info->on_event_in = ((M_TemporalGroup *)node)->on_addChildren;
22477 0 : info->fieldType = GF_SG_VRML_MFNODE;
22478 0 : info->NDTtype = NDT_SFTemporalNode;
22479 0 : info->far_ptr = & ((M_TemporalGroup *)node)->addChildren;
22480 0 : return GF_OK;
22481 : case 1:
22482 0 : info->name = "removeChildren";
22483 0 : info->eventType = GF_SG_EVENT_IN;
22484 0 : info->on_event_in = ((M_TemporalGroup *)node)->on_removeChildren;
22485 0 : info->fieldType = GF_SG_VRML_MFNODE;
22486 0 : info->NDTtype = NDT_SFTemporalNode;
22487 0 : info->far_ptr = & ((M_TemporalGroup *)node)->removeChildren;
22488 0 : return GF_OK;
22489 : case 2:
22490 0 : info->name = "children";
22491 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22492 0 : info->fieldType = GF_SG_VRML_MFNODE;
22493 0 : info->NDTtype = NDT_SFTemporalNode;
22494 0 : info->far_ptr = & ((M_TemporalGroup *)node)->children;
22495 0 : return GF_OK;
22496 : case 3:
22497 0 : info->name = "costart";
22498 0 : info->eventType = GF_SG_EVENT_FIELD;
22499 0 : info->fieldType = GF_SG_VRML_SFBOOL;
22500 0 : info->far_ptr = & ((M_TemporalGroup *) node)->costart;
22501 0 : return GF_OK;
22502 : case 4:
22503 0 : info->name = "coend";
22504 0 : info->eventType = GF_SG_EVENT_FIELD;
22505 0 : info->fieldType = GF_SG_VRML_SFBOOL;
22506 0 : info->far_ptr = & ((M_TemporalGroup *) node)->coend;
22507 0 : return GF_OK;
22508 : case 5:
22509 0 : info->name = "meet";
22510 0 : info->eventType = GF_SG_EVENT_FIELD;
22511 0 : info->fieldType = GF_SG_VRML_SFBOOL;
22512 0 : info->far_ptr = & ((M_TemporalGroup *) node)->meet;
22513 0 : return GF_OK;
22514 : case 6:
22515 0 : info->name = "priority";
22516 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22517 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
22518 0 : info->far_ptr = & ((M_TemporalGroup *) node)->priority;
22519 0 : return GF_OK;
22520 : case 7:
22521 0 : info->name = "isActive";
22522 0 : info->eventType = GF_SG_EVENT_OUT;
22523 0 : info->fieldType = GF_SG_VRML_SFBOOL;
22524 0 : info->far_ptr = & ((M_TemporalGroup *) node)->isActive;
22525 0 : return GF_OK;
22526 : case 8:
22527 0 : info->name = "activeChild";
22528 0 : info->eventType = GF_SG_EVENT_OUT;
22529 0 : info->fieldType = GF_SG_VRML_SFINT32;
22530 0 : info->far_ptr = & ((M_TemporalGroup *) node)->activeChild;
22531 0 : return GF_OK;
22532 : default:
22533 0 : return GF_BAD_PARAM;
22534 : }
22535 0 : }
22536 :
22537 :
22538 : static s32 TemporalGroup_get_field_index_by_name(char *name)
22539 : {
22540 0 : if (!strcmp("addChildren", name)) return 0;
22541 0 : if (!strcmp("removeChildren", name)) return 1;
22542 0 : if (!strcmp("children", name)) return 2;
22543 0 : if (!strcmp("costart", name)) return 3;
22544 0 : if (!strcmp("coend", name)) return 4;
22545 0 : if (!strcmp("meet", name)) return 5;
22546 0 : if (!strcmp("priority", name)) return 6;
22547 0 : if (!strcmp("isActive", name)) return 7;
22548 0 : if (!strcmp("activeChild", name)) return 8;
22549 0 : return -1;
22550 0 : }
22551 : static Bool TemporalGroup_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
22552 : {
22553 0 : switch (FieldIndex) {
22554 : case 6:
22555 0 : *AType = 0;
22556 0 : *QType = 3;
22557 0 : *b_min = FLT2FIX(0);
22558 0 : *b_max = FIX_MAX;
22559 0 : return 1;
22560 : default:
22561 0 : return 0;
22562 : }
22563 0 : }
22564 :
22565 :
22566 :
22567 : GF_Node *TemporalGroup_Create()
22568 : {
22569 : M_TemporalGroup *p;
22570 0 : GF_SAFEALLOC(p, M_TemporalGroup);
22571 0 : if(!p) return NULL;
22572 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TemporalGroup);
22573 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
22574 :
22575 : /*default field values*/
22576 0 : p->costart = 1;
22577 0 : return (GF_Node *)p;
22578 0 : }
22579 :
22580 :
22581 : /*
22582 : ServerCommand Node deletion
22583 : */
22584 :
22585 : static void ServerCommand_Del(GF_Node *node)
22586 : {
22587 0 : M_ServerCommand *p = (M_ServerCommand *) node;
22588 0 : gf_sg_mfurl_del(p->url);
22589 0 : gf_sg_sfstring_del(p->command);
22590 0 : gf_node_free((GF_Node *) p);
22591 0 : }
22592 :
22593 : static const u16 ServerCommand_Def2All[] = { 1, 2, 3};
22594 : static const u16 ServerCommand_In2All[] = { 0, 1, 2, 3};
22595 : static const u16 ServerCommand_Out2All[] = { 1, 2, 3};
22596 :
22597 : static u32 ServerCommand_get_field_count(GF_Node *node, u8 IndexMode)
22598 : {
22599 0 : switch(IndexMode) {
22600 : case GF_SG_FIELD_CODING_IN:
22601 0 : return 4;
22602 : case GF_SG_FIELD_CODING_DEF:
22603 0 : return 3;
22604 : case GF_SG_FIELD_CODING_OUT:
22605 0 : return 3;
22606 : case GF_SG_FIELD_CODING_DYN:
22607 0 : return 0;
22608 : default:
22609 0 : return 4;
22610 : }
22611 0 : }
22612 :
22613 : static GF_Err ServerCommand_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
22614 : {
22615 0 : switch(IndexMode) {
22616 : case GF_SG_FIELD_CODING_IN:
22617 0 : *allField = ServerCommand_In2All[inField];
22618 0 : return GF_OK;
22619 : case GF_SG_FIELD_CODING_DEF:
22620 0 : *allField = ServerCommand_Def2All[inField];
22621 0 : return GF_OK;
22622 : case GF_SG_FIELD_CODING_OUT:
22623 0 : *allField = ServerCommand_Out2All[inField];
22624 0 : return GF_OK;
22625 : default:
22626 0 : return GF_BAD_PARAM;
22627 : }
22628 0 : }
22629 : static GF_Err ServerCommand_get_field(GF_Node *node, GF_FieldInfo *info)
22630 : {
22631 0 : switch (info->fieldIndex) {
22632 : case 0:
22633 0 : info->name = "trigger";
22634 0 : info->eventType = GF_SG_EVENT_IN;
22635 0 : info->on_event_in = ((M_ServerCommand *)node)->on_trigger;
22636 0 : info->fieldType = GF_SG_VRML_SFBOOL;
22637 0 : info->far_ptr = & ((M_ServerCommand *) node)->trigger;
22638 0 : return GF_OK;
22639 : case 1:
22640 0 : info->name = "enable";
22641 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22642 0 : info->fieldType = GF_SG_VRML_SFBOOL;
22643 0 : info->far_ptr = & ((M_ServerCommand *) node)->enable;
22644 0 : return GF_OK;
22645 : case 2:
22646 0 : info->name = "url";
22647 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22648 0 : info->fieldType = GF_SG_VRML_MFURL;
22649 0 : info->far_ptr = & ((M_ServerCommand *) node)->url;
22650 0 : return GF_OK;
22651 : case 3:
22652 0 : info->name = "command";
22653 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22654 0 : info->fieldType = GF_SG_VRML_SFSTRING;
22655 0 : info->far_ptr = & ((M_ServerCommand *) node)->command;
22656 0 : return GF_OK;
22657 : default:
22658 0 : return GF_BAD_PARAM;
22659 : }
22660 0 : }
22661 :
22662 :
22663 : static s32 ServerCommand_get_field_index_by_name(char *name)
22664 : {
22665 0 : if (!strcmp("trigger", name)) return 0;
22666 0 : if (!strcmp("enable", name)) return 1;
22667 0 : if (!strcmp("url", name)) return 2;
22668 0 : if (!strcmp("command", name)) return 3;
22669 0 : return -1;
22670 0 : }
22671 : static Bool ServerCommand_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
22672 : {
22673 : switch (FieldIndex) {
22674 : default:
22675 0 : return 0;
22676 : }
22677 : }
22678 :
22679 :
22680 :
22681 : GF_Node *ServerCommand_Create()
22682 : {
22683 : M_ServerCommand *p;
22684 0 : GF_SAFEALLOC(p, M_ServerCommand);
22685 0 : if(!p) return NULL;
22686 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ServerCommand);
22687 :
22688 : /*default field values*/
22689 0 : return (GF_Node *)p;
22690 0 : }
22691 :
22692 :
22693 : /*
22694 : InputSensor Node deletion
22695 : */
22696 :
22697 : static void InputSensor_Del(GF_Node *node)
22698 : {
22699 108 : M_InputSensor *p = (M_InputSensor *) node;
22700 54 : gf_sg_sfcommand_del(p->buffer);
22701 54 : gf_sg_mfurl_del(p->url);
22702 54 : gf_node_free((GF_Node *) p);
22703 54 : }
22704 :
22705 : static const u16 InputSensor_Def2All[] = { 0, 1, 2};
22706 : static const u16 InputSensor_In2All[] = { 0, 1, 2};
22707 : static const u16 InputSensor_Out2All[] = { 0, 1, 2, 3};
22708 :
22709 : static u32 InputSensor_get_field_count(GF_Node *node, u8 IndexMode)
22710 : {
22711 96 : switch(IndexMode) {
22712 : case GF_SG_FIELD_CODING_IN:
22713 0 : return 3;
22714 : case GF_SG_FIELD_CODING_DEF:
22715 27 : return 3;
22716 : case GF_SG_FIELD_CODING_OUT:
22717 0 : return 4;
22718 : case GF_SG_FIELD_CODING_DYN:
22719 0 : return 0;
22720 : default:
22721 21 : return 4;
22722 : }
22723 48 : }
22724 :
22725 : static GF_Err InputSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
22726 : {
22727 96 : switch(IndexMode) {
22728 : case GF_SG_FIELD_CODING_IN:
22729 0 : *allField = InputSensor_In2All[inField];
22730 0 : return GF_OK;
22731 : case GF_SG_FIELD_CODING_DEF:
22732 48 : *allField = InputSensor_Def2All[inField];
22733 48 : return GF_OK;
22734 : case GF_SG_FIELD_CODING_OUT:
22735 0 : *allField = InputSensor_Out2All[inField];
22736 0 : return GF_OK;
22737 : default:
22738 0 : return GF_BAD_PARAM;
22739 : }
22740 48 : }
22741 : static GF_Err InputSensor_get_field(GF_Node *node, GF_FieldInfo *info)
22742 : {
22743 510 : switch (info->fieldIndex) {
22744 : case 0:
22745 54 : info->name = "enabled";
22746 54 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22747 54 : info->fieldType = GF_SG_VRML_SFBOOL;
22748 54 : info->far_ptr = & ((M_InputSensor *) node)->enabled;
22749 54 : return GF_OK;
22750 : case 1:
22751 81 : info->name = "buffer";
22752 81 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22753 81 : info->fieldType = GF_SG_VRML_SFCOMMANDBUFFER;
22754 81 : info->far_ptr = & ((M_InputSensor *) node)->buffer;
22755 81 : return GF_OK;
22756 : case 2:
22757 99 : info->name = "url";
22758 99 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22759 99 : info->fieldType = GF_SG_VRML_MFURL;
22760 99 : info->far_ptr = & ((M_InputSensor *) node)->url;
22761 99 : return GF_OK;
22762 : case 3:
22763 21 : info->name = "eventTime";
22764 21 : info->eventType = GF_SG_EVENT_OUT;
22765 21 : info->fieldType = GF_SG_VRML_SFTIME;
22766 21 : info->far_ptr = & ((M_InputSensor *) node)->eventTime;
22767 21 : return GF_OK;
22768 : default:
22769 0 : return GF_BAD_PARAM;
22770 : }
22771 255 : }
22772 :
22773 :
22774 : static s32 InputSensor_get_field_index_by_name(char *name)
22775 : {
22776 48 : if (!strcmp("enabled", name)) return 0;
22777 36 : if (!strcmp("buffer", name)) return 1;
22778 24 : if (!strcmp("url", name)) return 2;
22779 0 : if (!strcmp("eventTime", name)) return 3;
22780 0 : return -1;
22781 24 : }
22782 : static Bool InputSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
22783 : {
22784 : switch (FieldIndex) {
22785 : default:
22786 0 : return 0;
22787 : }
22788 : }
22789 :
22790 :
22791 :
22792 : GF_Node *InputSensor_Create()
22793 : {
22794 : M_InputSensor *p;
22795 162 : GF_SAFEALLOC(p, M_InputSensor);
22796 54 : if(!p) return NULL;
22797 54 : gf_node_setup((GF_Node *)p, TAG_MPEG4_InputSensor);
22798 54 : p->buffer.commandList = gf_list_new();
22799 :
22800 : /*default field values*/
22801 54 : p->enabled = 1;
22802 54 : return (GF_Node *)p;
22803 54 : }
22804 :
22805 :
22806 : /*
22807 : MatteTexture Node deletion
22808 : */
22809 :
22810 : static void MatteTexture_Del(GF_Node *node)
22811 : {
22812 0 : M_MatteTexture *p = (M_MatteTexture *) node;
22813 0 : gf_node_unregister((GF_Node *) p->surfaceA, (GF_Node *) p);
22814 0 : gf_node_unregister((GF_Node *) p->surfaceB, (GF_Node *) p);
22815 0 : gf_node_unregister((GF_Node *) p->alphaSurface, (GF_Node *) p);
22816 0 : gf_sg_sfstring_del(p->operation);
22817 0 : gf_sg_mffloat_del(p->parameter);
22818 0 : gf_node_free((GF_Node *) p);
22819 0 : }
22820 :
22821 : static const u16 MatteTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
22822 : static const u16 MatteTexture_In2All[] = { 3, 5, 6};
22823 : static const u16 MatteTexture_Out2All[] = { 3, 5, 6};
22824 :
22825 : static u32 MatteTexture_get_field_count(GF_Node *node, u8 IndexMode)
22826 : {
22827 0 : switch(IndexMode) {
22828 : case GF_SG_FIELD_CODING_IN:
22829 0 : return 3;
22830 : case GF_SG_FIELD_CODING_DEF:
22831 0 : return 7;
22832 : case GF_SG_FIELD_CODING_OUT:
22833 0 : return 3;
22834 : case GF_SG_FIELD_CODING_DYN:
22835 0 : return 0;
22836 : default:
22837 0 : return 7;
22838 : }
22839 0 : }
22840 :
22841 : static GF_Err MatteTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
22842 : {
22843 0 : switch(IndexMode) {
22844 : case GF_SG_FIELD_CODING_IN:
22845 0 : *allField = MatteTexture_In2All[inField];
22846 0 : return GF_OK;
22847 : case GF_SG_FIELD_CODING_DEF:
22848 0 : *allField = MatteTexture_Def2All[inField];
22849 0 : return GF_OK;
22850 : case GF_SG_FIELD_CODING_OUT:
22851 0 : *allField = MatteTexture_Out2All[inField];
22852 0 : return GF_OK;
22853 : default:
22854 0 : return GF_BAD_PARAM;
22855 : }
22856 0 : }
22857 : static GF_Err MatteTexture_get_field(GF_Node *node, GF_FieldInfo *info)
22858 : {
22859 0 : switch (info->fieldIndex) {
22860 : case 0:
22861 0 : info->name = "surfaceA";
22862 0 : info->eventType = GF_SG_EVENT_FIELD;
22863 0 : info->fieldType = GF_SG_VRML_SFNODE;
22864 0 : info->NDTtype = NDT_SFTextureNode;
22865 0 : info->far_ptr = & ((M_MatteTexture *)node)->surfaceA;
22866 0 : return GF_OK;
22867 : case 1:
22868 0 : info->name = "surfaceB";
22869 0 : info->eventType = GF_SG_EVENT_FIELD;
22870 0 : info->fieldType = GF_SG_VRML_SFNODE;
22871 0 : info->NDTtype = NDT_SFTextureNode;
22872 0 : info->far_ptr = & ((M_MatteTexture *)node)->surfaceB;
22873 0 : return GF_OK;
22874 : case 2:
22875 0 : info->name = "alphaSurface";
22876 0 : info->eventType = GF_SG_EVENT_FIELD;
22877 0 : info->fieldType = GF_SG_VRML_SFNODE;
22878 0 : info->NDTtype = NDT_SFTextureNode;
22879 0 : info->far_ptr = & ((M_MatteTexture *)node)->alphaSurface;
22880 0 : return GF_OK;
22881 : case 3:
22882 0 : info->name = "operation";
22883 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22884 0 : info->fieldType = GF_SG_VRML_SFSTRING;
22885 0 : info->far_ptr = & ((M_MatteTexture *) node)->operation;
22886 0 : return GF_OK;
22887 : case 4:
22888 0 : info->name = "overwrite";
22889 0 : info->eventType = GF_SG_EVENT_FIELD;
22890 0 : info->fieldType = GF_SG_VRML_SFBOOL;
22891 0 : info->far_ptr = & ((M_MatteTexture *) node)->overwrite;
22892 0 : return GF_OK;
22893 : case 5:
22894 0 : info->name = "fraction";
22895 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22896 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
22897 0 : info->far_ptr = & ((M_MatteTexture *) node)->fraction;
22898 0 : return GF_OK;
22899 : case 6:
22900 0 : info->name = "parameter";
22901 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22902 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
22903 0 : info->far_ptr = & ((M_MatteTexture *) node)->parameter;
22904 0 : return GF_OK;
22905 : default:
22906 0 : return GF_BAD_PARAM;
22907 : }
22908 0 : }
22909 :
22910 :
22911 : static s32 MatteTexture_get_field_index_by_name(char *name)
22912 : {
22913 0 : if (!strcmp("surfaceA", name)) return 0;
22914 0 : if (!strcmp("surfaceB", name)) return 1;
22915 0 : if (!strcmp("alphaSurface", name)) return 2;
22916 0 : if (!strcmp("operation", name)) return 3;
22917 0 : if (!strcmp("overwrite", name)) return 4;
22918 0 : if (!strcmp("fraction", name)) return 5;
22919 0 : if (!strcmp("parameter", name)) return 6;
22920 0 : return -1;
22921 0 : }
22922 : static Bool MatteTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
22923 : {
22924 : switch (FieldIndex) {
22925 : default:
22926 0 : return 0;
22927 : }
22928 : }
22929 :
22930 :
22931 :
22932 : GF_Node *MatteTexture_Create()
22933 : {
22934 : M_MatteTexture *p;
22935 0 : GF_SAFEALLOC(p, M_MatteTexture);
22936 0 : if(!p) return NULL;
22937 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MatteTexture);
22938 :
22939 : /*default field values*/
22940 0 : p->fraction = FLT2FIX(0);
22941 0 : p->parameter.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
22942 0 : p->parameter.count = 1;
22943 0 : p->parameter.vals[0] = FLT2FIX(0);
22944 0 : return (GF_Node *)p;
22945 0 : }
22946 :
22947 :
22948 : /*
22949 : MediaBuffer Node deletion
22950 : */
22951 :
22952 : static void MediaBuffer_Del(GF_Node *node)
22953 : {
22954 0 : M_MediaBuffer *p = (M_MediaBuffer *) node;
22955 0 : gf_sg_mfurl_del(p->url);
22956 0 : gf_node_free((GF_Node *) p);
22957 0 : }
22958 :
22959 : static const u16 MediaBuffer_Def2All[] = { 0, 1, 2, 3, 5};
22960 : static const u16 MediaBuffer_In2All[] = { 0, 1, 2, 3, 5};
22961 : static const u16 MediaBuffer_Out2All[] = { 0, 1, 2, 3, 4, 5};
22962 :
22963 : static u32 MediaBuffer_get_field_count(GF_Node *node, u8 IndexMode)
22964 : {
22965 0 : switch(IndexMode) {
22966 : case GF_SG_FIELD_CODING_IN:
22967 0 : return 5;
22968 : case GF_SG_FIELD_CODING_DEF:
22969 0 : return 5;
22970 : case GF_SG_FIELD_CODING_OUT:
22971 0 : return 6;
22972 : case GF_SG_FIELD_CODING_DYN:
22973 0 : return 0;
22974 : default:
22975 0 : return 6;
22976 : }
22977 0 : }
22978 :
22979 : static GF_Err MediaBuffer_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
22980 : {
22981 0 : switch(IndexMode) {
22982 : case GF_SG_FIELD_CODING_IN:
22983 0 : *allField = MediaBuffer_In2All[inField];
22984 0 : return GF_OK;
22985 : case GF_SG_FIELD_CODING_DEF:
22986 0 : *allField = MediaBuffer_Def2All[inField];
22987 0 : return GF_OK;
22988 : case GF_SG_FIELD_CODING_OUT:
22989 0 : *allField = MediaBuffer_Out2All[inField];
22990 0 : return GF_OK;
22991 : default:
22992 0 : return GF_BAD_PARAM;
22993 : }
22994 0 : }
22995 : static GF_Err MediaBuffer_get_field(GF_Node *node, GF_FieldInfo *info)
22996 : {
22997 0 : switch (info->fieldIndex) {
22998 : case 0:
22999 0 : info->name = "bufferSize";
23000 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23001 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
23002 0 : info->far_ptr = & ((M_MediaBuffer *) node)->bufferSize;
23003 0 : return GF_OK;
23004 : case 1:
23005 0 : info->name = "url";
23006 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23007 0 : info->fieldType = GF_SG_VRML_MFURL;
23008 0 : info->far_ptr = & ((M_MediaBuffer *) node)->url;
23009 0 : return GF_OK;
23010 : case 2:
23011 0 : info->name = "mediaStartTime";
23012 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23013 0 : info->fieldType = GF_SG_VRML_SFTIME;
23014 0 : info->far_ptr = & ((M_MediaBuffer *) node)->mediaStartTime;
23015 0 : return GF_OK;
23016 : case 3:
23017 0 : info->name = "mediaStopTime";
23018 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23019 0 : info->fieldType = GF_SG_VRML_SFTIME;
23020 0 : info->far_ptr = & ((M_MediaBuffer *) node)->mediaStopTime;
23021 0 : return GF_OK;
23022 : case 4:
23023 0 : info->name = "isBuffered";
23024 0 : info->eventType = GF_SG_EVENT_OUT;
23025 0 : info->fieldType = GF_SG_VRML_SFBOOL;
23026 0 : info->far_ptr = & ((M_MediaBuffer *) node)->isBuffered;
23027 0 : return GF_OK;
23028 : case 5:
23029 0 : info->name = "enabled";
23030 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23031 0 : info->fieldType = GF_SG_VRML_SFBOOL;
23032 0 : info->far_ptr = & ((M_MediaBuffer *) node)->enabled;
23033 0 : return GF_OK;
23034 : default:
23035 0 : return GF_BAD_PARAM;
23036 : }
23037 0 : }
23038 :
23039 :
23040 : static s32 MediaBuffer_get_field_index_by_name(char *name)
23041 : {
23042 0 : if (!strcmp("bufferSize", name)) return 0;
23043 0 : if (!strcmp("url", name)) return 1;
23044 0 : if (!strcmp("mediaStartTime", name)) return 2;
23045 0 : if (!strcmp("mediaStopTime", name)) return 3;
23046 0 : if (!strcmp("isBuffered", name)) return 4;
23047 0 : if (!strcmp("enabled", name)) return 5;
23048 0 : return -1;
23049 0 : }
23050 : static Bool MediaBuffer_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
23051 : {
23052 : switch (FieldIndex) {
23053 : default:
23054 0 : return 0;
23055 : }
23056 : }
23057 :
23058 :
23059 :
23060 : GF_Node *MediaBuffer_Create()
23061 : {
23062 : M_MediaBuffer *p;
23063 0 : GF_SAFEALLOC(p, M_MediaBuffer);
23064 0 : if(!p) return NULL;
23065 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MediaBuffer);
23066 :
23067 : /*default field values*/
23068 0 : p->bufferSize = FLT2FIX(0.0);
23069 0 : p->mediaStartTime = -1;
23070 0 : p->mediaStopTime = FIX_MAX;
23071 0 : p->enabled = 1;
23072 0 : return (GF_Node *)p;
23073 0 : }
23074 :
23075 :
23076 : /*
23077 : MediaControl Node deletion
23078 : */
23079 :
23080 : static void MediaControl_Del(GF_Node *node)
23081 : {
23082 554 : M_MediaControl *p = (M_MediaControl *) node;
23083 277 : gf_sg_mfurl_del(p->url);
23084 277 : gf_node_free((GF_Node *) p);
23085 277 : }
23086 :
23087 : static const u16 MediaControl_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
23088 : static const u16 MediaControl_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
23089 : static const u16 MediaControl_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
23090 :
23091 : static u32 MediaControl_get_field_count(GF_Node *node, u8 IndexMode)
23092 : {
23093 782 : switch(IndexMode) {
23094 : case GF_SG_FIELD_CODING_IN:
23095 144 : return 8;
23096 : case GF_SG_FIELD_CODING_DEF:
23097 128 : return 8;
23098 : case GF_SG_FIELD_CODING_OUT:
23099 0 : return 9;
23100 : case GF_SG_FIELD_CODING_DYN:
23101 0 : return 0;
23102 : default:
23103 119 : return 9;
23104 : }
23105 391 : }
23106 :
23107 : static GF_Err MediaControl_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
23108 : {
23109 1202 : switch(IndexMode) {
23110 : case GF_SG_FIELD_CODING_IN:
23111 220 : *allField = MediaControl_In2All[inField];
23112 220 : return GF_OK;
23113 : case GF_SG_FIELD_CODING_DEF:
23114 381 : *allField = MediaControl_Def2All[inField];
23115 381 : return GF_OK;
23116 : case GF_SG_FIELD_CODING_OUT:
23117 0 : *allField = MediaControl_Out2All[inField];
23118 0 : return GF_OK;
23119 : default:
23120 0 : return GF_BAD_PARAM;
23121 : }
23122 601 : }
23123 : static GF_Err MediaControl_get_field(GF_Node *node, GF_FieldInfo *info)
23124 : {
23125 6154 : switch (info->fieldIndex) {
23126 : case 0:
23127 519 : info->name = "url";
23128 519 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23129 519 : info->fieldType = GF_SG_VRML_MFURL;
23130 519 : info->far_ptr = & ((M_MediaControl *) node)->url;
23131 519 : return GF_OK;
23132 : case 1:
23133 293 : info->name = "mediaStartTime";
23134 293 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23135 293 : info->fieldType = GF_SG_VRML_SFTIME;
23136 293 : info->far_ptr = & ((M_MediaControl *) node)->mediaStartTime;
23137 293 : return GF_OK;
23138 : case 2:
23139 305 : info->name = "mediaStopTime";
23140 305 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23141 305 : info->fieldType = GF_SG_VRML_SFTIME;
23142 305 : info->far_ptr = & ((M_MediaControl *) node)->mediaStopTime;
23143 305 : return GF_OK;
23144 : case 3:
23145 436 : info->name = "mediaSpeed";
23146 436 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23147 436 : info->fieldType = GF_SG_VRML_SFFLOAT;
23148 436 : info->far_ptr = & ((M_MediaControl *) node)->mediaSpeed;
23149 436 : return GF_OK;
23150 : case 4:
23151 398 : info->name = "loop";
23152 398 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23153 398 : info->fieldType = GF_SG_VRML_SFBOOL;
23154 398 : info->far_ptr = & ((M_MediaControl *) node)->loop;
23155 398 : return GF_OK;
23156 : case 5:
23157 398 : info->name = "preRoll";
23158 398 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23159 398 : info->fieldType = GF_SG_VRML_SFBOOL;
23160 398 : info->far_ptr = & ((M_MediaControl *) node)->preRoll;
23161 398 : return GF_OK;
23162 : case 6:
23163 338 : info->name = "mute";
23164 338 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23165 338 : info->fieldType = GF_SG_VRML_SFBOOL;
23166 338 : info->far_ptr = & ((M_MediaControl *) node)->mute;
23167 338 : return GF_OK;
23168 : case 7:
23169 278 : info->name = "enabled";
23170 278 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23171 278 : info->fieldType = GF_SG_VRML_SFBOOL;
23172 278 : info->far_ptr = & ((M_MediaControl *) node)->enabled;
23173 278 : return GF_OK;
23174 : case 8:
23175 112 : info->name = "isPreRolled";
23176 112 : info->eventType = GF_SG_EVENT_OUT;
23177 112 : info->fieldType = GF_SG_VRML_SFBOOL;
23178 112 : info->far_ptr = & ((M_MediaControl *) node)->isPreRolled;
23179 112 : return GF_OK;
23180 : default:
23181 0 : return GF_BAD_PARAM;
23182 : }
23183 3077 : }
23184 :
23185 :
23186 : static s32 MediaControl_get_field_index_by_name(char *name)
23187 : {
23188 491 : if (!strcmp("url", name)) return 0;
23189 152 : if (!strcmp("mediaStartTime", name)) return 1;
23190 160 : if (!strcmp("mediaStopTime", name)) return 2;
23191 176 : if (!strcmp("mediaSpeed", name)) return 3;
23192 112 : if (!strcmp("loop", name)) return 4;
23193 80 : if (!strcmp("preRoll", name)) return 5;
23194 32 : if (!strcmp("mute", name)) return 6;
23195 0 : if (!strcmp("enabled", name)) return 7;
23196 0 : if (!strcmp("isPreRolled", name)) return 8;
23197 0 : return -1;
23198 213 : }
23199 : static Bool MediaControl_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
23200 : {
23201 : switch (FieldIndex) {
23202 : default:
23203 0 : return 0;
23204 : }
23205 : }
23206 :
23207 :
23208 :
23209 : GF_Node *MediaControl_Create()
23210 : {
23211 : M_MediaControl *p;
23212 831 : GF_SAFEALLOC(p, M_MediaControl);
23213 277 : if(!p) return NULL;
23214 277 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MediaControl);
23215 :
23216 : /*default field values*/
23217 277 : p->mediaStartTime = -1;
23218 277 : p->mediaStopTime = FIX_MAX;
23219 277 : p->mediaSpeed = FLT2FIX(1.0);
23220 277 : p->preRoll = 1;
23221 277 : p->enabled = 1;
23222 277 : return (GF_Node *)p;
23223 277 : }
23224 :
23225 :
23226 : /*
23227 : MediaSensor Node deletion
23228 : */
23229 :
23230 : static void MediaSensor_Del(GF_Node *node)
23231 : {
23232 480 : M_MediaSensor *p = (M_MediaSensor *) node;
23233 240 : gf_sg_mfurl_del(p->url);
23234 240 : gf_sg_mfstring_del(p->info);
23235 240 : gf_node_free((GF_Node *) p);
23236 240 : }
23237 :
23238 : static const u16 MediaSensor_Def2All[] = { 0};
23239 : static const u16 MediaSensor_In2All[] = { 0};
23240 : static const u16 MediaSensor_Out2All[] = { 0, 1, 2, 3, 4, 5};
23241 :
23242 : static u32 MediaSensor_get_field_count(GF_Node *node, u8 IndexMode)
23243 : {
23244 908 : switch(IndexMode) {
23245 : case GF_SG_FIELD_CODING_IN:
23246 0 : return 1;
23247 : case GF_SG_FIELD_CODING_DEF:
23248 117 : return 1;
23249 : case GF_SG_FIELD_CODING_OUT:
23250 243 : return 6;
23251 : case GF_SG_FIELD_CODING_DYN:
23252 0 : return 0;
23253 : default:
23254 94 : return 6;
23255 : }
23256 454 : }
23257 :
23258 : static GF_Err MediaSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
23259 : {
23260 828 : switch(IndexMode) {
23261 : case GF_SG_FIELD_CODING_IN:
23262 0 : *allField = MediaSensor_In2All[inField];
23263 0 : return GF_OK;
23264 : case GF_SG_FIELD_CODING_DEF:
23265 91 : *allField = MediaSensor_Def2All[inField];
23266 91 : return GF_OK;
23267 : case GF_SG_FIELD_CODING_OUT:
23268 323 : *allField = MediaSensor_Out2All[inField];
23269 323 : return GF_OK;
23270 : default:
23271 0 : return GF_BAD_PARAM;
23272 : }
23273 414 : }
23274 : static GF_Err MediaSensor_get_field(GF_Node *node, GF_FieldInfo *info)
23275 : {
23276 2254 : switch (info->fieldIndex) {
23277 : case 0:
23278 435 : info->name = "url";
23279 435 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23280 435 : info->fieldType = GF_SG_VRML_MFURL;
23281 435 : info->far_ptr = & ((M_MediaSensor *) node)->url;
23282 435 : return GF_OK;
23283 : case 1:
23284 176 : info->name = "mediaCurrentTime";
23285 176 : info->eventType = GF_SG_EVENT_OUT;
23286 176 : info->fieldType = GF_SG_VRML_SFTIME;
23287 176 : info->far_ptr = & ((M_MediaSensor *) node)->mediaCurrentTime;
23288 176 : return GF_OK;
23289 : case 2:
23290 110 : info->name = "streamObjectStartTime";
23291 110 : info->eventType = GF_SG_EVENT_OUT;
23292 110 : info->fieldType = GF_SG_VRML_SFTIME;
23293 110 : info->far_ptr = & ((M_MediaSensor *) node)->streamObjectStartTime;
23294 110 : return GF_OK;
23295 : case 3:
23296 168 : info->name = "mediaDuration";
23297 168 : info->eventType = GF_SG_EVENT_OUT;
23298 168 : info->fieldType = GF_SG_VRML_SFTIME;
23299 168 : info->far_ptr = & ((M_MediaSensor *) node)->mediaDuration;
23300 168 : return GF_OK;
23301 : case 4:
23302 128 : info->name = "isActive";
23303 128 : info->eventType = GF_SG_EVENT_OUT;
23304 128 : info->fieldType = GF_SG_VRML_SFBOOL;
23305 128 : info->far_ptr = & ((M_MediaSensor *) node)->isActive;
23306 128 : return GF_OK;
23307 : case 5:
23308 110 : info->name = "info";
23309 110 : info->eventType = GF_SG_EVENT_OUT;
23310 110 : info->fieldType = GF_SG_VRML_MFSTRING;
23311 110 : info->far_ptr = & ((M_MediaSensor *) node)->info;
23312 110 : return GF_OK;
23313 : default:
23314 0 : return GF_BAD_PARAM;
23315 : }
23316 1127 : }
23317 :
23318 :
23319 : static s32 MediaSensor_get_field_index_by_name(char *name)
23320 : {
23321 378 : if (!strcmp("url", name)) return 0;
23322 152 : if (!strcmp("mediaCurrentTime", name)) return 1;
23323 78 : if (!strcmp("streamObjectStartTime", name)) return 2;
23324 99 : if (!strcmp("mediaDuration", name)) return 3;
23325 42 : if (!strcmp("isActive", name)) return 4;
23326 16 : if (!strcmp("info", name)) return 5;
23327 0 : return -1;
23328 163 : }
23329 : static Bool MediaSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
23330 : {
23331 : switch (FieldIndex) {
23332 : default:
23333 0 : return 0;
23334 : }
23335 : }
23336 :
23337 :
23338 :
23339 : GF_Node *MediaSensor_Create()
23340 : {
23341 : M_MediaSensor *p;
23342 720 : GF_SAFEALLOC(p, M_MediaSensor);
23343 240 : if(!p) return NULL;
23344 240 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MediaSensor);
23345 :
23346 : /*default field values*/
23347 240 : return (GF_Node *)p;
23348 240 : }
23349 :
23350 :
23351 : /*
23352 : BitWrapper Node deletion
23353 : */
23354 :
23355 : static void BitWrapper_Del(GF_Node *node)
23356 : {
23357 0 : M_BitWrapper *p = (M_BitWrapper *) node;
23358 0 : gf_node_unregister((GF_Node *) p->node, (GF_Node *) p);
23359 0 : gf_sg_mfurl_del(p->url);
23360 0 : gf_sg_sfstring_del(p->buffer);
23361 0 : gf_node_free((GF_Node *) p);
23362 0 : }
23363 :
23364 : static const u16 BitWrapper_Def2All[] = { 0, 1, 2, 3};
23365 :
23366 : static u32 BitWrapper_get_field_count(GF_Node *node, u8 IndexMode)
23367 : {
23368 0 : switch(IndexMode) {
23369 : case GF_SG_FIELD_CODING_IN:
23370 0 : return 0;
23371 : case GF_SG_FIELD_CODING_DEF:
23372 0 : return 4;
23373 : case GF_SG_FIELD_CODING_OUT:
23374 0 : return 0;
23375 : case GF_SG_FIELD_CODING_DYN:
23376 0 : return 0;
23377 : default:
23378 0 : return 4;
23379 : }
23380 0 : }
23381 :
23382 : static GF_Err BitWrapper_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
23383 : {
23384 0 : switch(IndexMode) {
23385 : case GF_SG_FIELD_CODING_DEF:
23386 0 : *allField = BitWrapper_Def2All[inField];
23387 0 : return GF_OK;
23388 : default:
23389 0 : return GF_BAD_PARAM;
23390 : }
23391 0 : }
23392 : static GF_Err BitWrapper_get_field(GF_Node *node, GF_FieldInfo *info)
23393 : {
23394 0 : switch (info->fieldIndex) {
23395 : case 0:
23396 0 : info->name = "node";
23397 0 : info->eventType = GF_SG_EVENT_FIELD;
23398 0 : info->fieldType = GF_SG_VRML_SFNODE;
23399 0 : info->NDTtype = NDT_SFWorldNode;
23400 0 : info->far_ptr = & ((M_BitWrapper *)node)->node;
23401 0 : return GF_OK;
23402 : case 1:
23403 0 : info->name = "type";
23404 0 : info->eventType = GF_SG_EVENT_FIELD;
23405 0 : info->fieldType = GF_SG_VRML_SFINT32;
23406 0 : info->far_ptr = & ((M_BitWrapper *) node)->type;
23407 0 : return GF_OK;
23408 : case 2:
23409 0 : info->name = "url";
23410 0 : info->eventType = GF_SG_EVENT_FIELD;
23411 0 : info->fieldType = GF_SG_VRML_MFURL;
23412 0 : info->far_ptr = & ((M_BitWrapper *) node)->url;
23413 0 : return GF_OK;
23414 : case 3:
23415 0 : info->name = "buffer";
23416 0 : info->eventType = GF_SG_EVENT_FIELD;
23417 0 : info->fieldType = GF_SG_VRML_SFSTRING;
23418 0 : info->far_ptr = & ((M_BitWrapper *) node)->buffer;
23419 0 : return GF_OK;
23420 : default:
23421 0 : return GF_BAD_PARAM;
23422 : }
23423 0 : }
23424 :
23425 :
23426 : static s32 BitWrapper_get_field_index_by_name(char *name)
23427 : {
23428 0 : if (!strcmp("node", name)) return 0;
23429 0 : if (!strcmp("type", name)) return 1;
23430 0 : if (!strcmp("url", name)) return 2;
23431 0 : if (!strcmp("buffer", name)) return 3;
23432 0 : return -1;
23433 0 : }
23434 : static Bool BitWrapper_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
23435 : {
23436 : switch (FieldIndex) {
23437 : default:
23438 0 : return 0;
23439 : }
23440 : }
23441 :
23442 :
23443 :
23444 : GF_Node *BitWrapper_Create()
23445 : {
23446 : M_BitWrapper *p;
23447 0 : GF_SAFEALLOC(p, M_BitWrapper);
23448 0 : if(!p) return NULL;
23449 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_BitWrapper);
23450 :
23451 : /*default field values*/
23452 0 : p->type = 0;
23453 0 : return (GF_Node *)p;
23454 0 : }
23455 :
23456 :
23457 : /*
23458 : CoordinateInterpolator4D Node deletion
23459 : */
23460 :
23461 : static void CoordinateInterpolator4D_Del(GF_Node *node)
23462 : {
23463 0 : M_CoordinateInterpolator4D *p = (M_CoordinateInterpolator4D *) node;
23464 0 : gf_sg_mffloat_del(p->key);
23465 0 : gf_sg_mfvec4f_del(p->keyValue);
23466 0 : gf_sg_mfvec4f_del(p->value_changed);
23467 0 : gf_node_free((GF_Node *) p);
23468 0 : }
23469 :
23470 : static const u16 CoordinateInterpolator4D_Def2All[] = { 1, 2};
23471 : static const u16 CoordinateInterpolator4D_In2All[] = { 0, 1, 2};
23472 : static const u16 CoordinateInterpolator4D_Out2All[] = { 1, 2, 3};
23473 :
23474 : static u32 CoordinateInterpolator4D_get_field_count(GF_Node *node, u8 IndexMode)
23475 : {
23476 0 : switch(IndexMode) {
23477 : case GF_SG_FIELD_CODING_IN:
23478 0 : return 3;
23479 : case GF_SG_FIELD_CODING_DEF:
23480 0 : return 2;
23481 : case GF_SG_FIELD_CODING_OUT:
23482 0 : return 3;
23483 : case GF_SG_FIELD_CODING_DYN:
23484 0 : return 0;
23485 : default:
23486 0 : return 4;
23487 : }
23488 0 : }
23489 :
23490 : static GF_Err CoordinateInterpolator4D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
23491 : {
23492 0 : switch(IndexMode) {
23493 : case GF_SG_FIELD_CODING_IN:
23494 0 : *allField = CoordinateInterpolator4D_In2All[inField];
23495 0 : return GF_OK;
23496 : case GF_SG_FIELD_CODING_DEF:
23497 0 : *allField = CoordinateInterpolator4D_Def2All[inField];
23498 0 : return GF_OK;
23499 : case GF_SG_FIELD_CODING_OUT:
23500 0 : *allField = CoordinateInterpolator4D_Out2All[inField];
23501 0 : return GF_OK;
23502 : default:
23503 0 : return GF_BAD_PARAM;
23504 : }
23505 0 : }
23506 : static GF_Err CoordinateInterpolator4D_get_field(GF_Node *node, GF_FieldInfo *info)
23507 : {
23508 0 : switch (info->fieldIndex) {
23509 : case 0:
23510 0 : info->name = "set_fraction";
23511 0 : info->eventType = GF_SG_EVENT_IN;
23512 0 : info->on_event_in = ((M_CoordinateInterpolator4D *)node)->on_set_fraction;
23513 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
23514 0 : info->far_ptr = & ((M_CoordinateInterpolator4D *) node)->set_fraction;
23515 0 : return GF_OK;
23516 : case 1:
23517 0 : info->name = "key";
23518 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23519 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
23520 0 : info->far_ptr = & ((M_CoordinateInterpolator4D *) node)->key;
23521 0 : return GF_OK;
23522 : case 2:
23523 0 : info->name = "keyValue";
23524 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23525 0 : info->fieldType = GF_SG_VRML_MFVEC4F;
23526 0 : info->far_ptr = & ((M_CoordinateInterpolator4D *) node)->keyValue;
23527 0 : return GF_OK;
23528 : case 3:
23529 0 : info->name = "value_changed";
23530 0 : info->eventType = GF_SG_EVENT_OUT;
23531 0 : info->fieldType = GF_SG_VRML_MFVEC4F;
23532 0 : info->far_ptr = & ((M_CoordinateInterpolator4D *) node)->value_changed;
23533 0 : return GF_OK;
23534 : default:
23535 0 : return GF_BAD_PARAM;
23536 : }
23537 0 : }
23538 :
23539 :
23540 : static s32 CoordinateInterpolator4D_get_field_index_by_name(char *name)
23541 : {
23542 0 : if (!strcmp("set_fraction", name)) return 0;
23543 0 : if (!strcmp("key", name)) return 1;
23544 0 : if (!strcmp("keyValue", name)) return 2;
23545 0 : if (!strcmp("value_changed", name)) return 3;
23546 0 : return -1;
23547 0 : }
23548 : static Bool CoordinateInterpolator4D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
23549 : {
23550 0 : switch (FieldIndex) {
23551 : case 1:
23552 0 : *AType = 0;
23553 0 : *QType = 8;
23554 0 : *b_min = FLT2FIX(0);
23555 0 : *b_max = FLT2FIX(1);
23556 0 : return 1;
23557 : case 2:
23558 0 : *AType = 0;
23559 0 : *QType = 15;
23560 0 : *b_min = FIX_MIN;
23561 0 : *b_max = FIX_MAX;
23562 0 : return 1;
23563 : default:
23564 0 : return 0;
23565 : }
23566 0 : }
23567 :
23568 :
23569 :
23570 : GF_Node *CoordinateInterpolator4D_Create()
23571 : {
23572 : M_CoordinateInterpolator4D *p;
23573 0 : GF_SAFEALLOC(p, M_CoordinateInterpolator4D);
23574 0 : if(!p) return NULL;
23575 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_CoordinateInterpolator4D);
23576 :
23577 : /*default field values*/
23578 0 : return (GF_Node *)p;
23579 0 : }
23580 :
23581 :
23582 : /*
23583 : DepthImage Node deletion
23584 : */
23585 :
23586 : static void DepthImage_Del(GF_Node *node)
23587 : {
23588 0 : M_DepthImage *p = (M_DepthImage *) node;
23589 0 : gf_node_unregister((GF_Node *) p->diTexture, (GF_Node *) p);
23590 0 : gf_node_free((GF_Node *) p);
23591 0 : }
23592 :
23593 : static const u16 DepthImage_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
23594 :
23595 : static u32 DepthImage_get_field_count(GF_Node *node, u8 IndexMode)
23596 : {
23597 0 : switch(IndexMode) {
23598 : case GF_SG_FIELD_CODING_IN:
23599 0 : return 0;
23600 : case GF_SG_FIELD_CODING_DEF:
23601 0 : return 7;
23602 : case GF_SG_FIELD_CODING_OUT:
23603 0 : return 0;
23604 : case GF_SG_FIELD_CODING_DYN:
23605 0 : return 0;
23606 : default:
23607 0 : return 7;
23608 : }
23609 0 : }
23610 :
23611 : static GF_Err DepthImage_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
23612 : {
23613 0 : switch(IndexMode) {
23614 : case GF_SG_FIELD_CODING_DEF:
23615 0 : *allField = DepthImage_Def2All[inField];
23616 0 : return GF_OK;
23617 : default:
23618 0 : return GF_BAD_PARAM;
23619 : }
23620 0 : }
23621 : static GF_Err DepthImage_get_field(GF_Node *node, GF_FieldInfo *info)
23622 : {
23623 0 : switch (info->fieldIndex) {
23624 : case 0:
23625 0 : info->name = "diTexture";
23626 0 : info->eventType = GF_SG_EVENT_FIELD;
23627 0 : info->fieldType = GF_SG_VRML_SFNODE;
23628 0 : info->NDTtype = NDT_SFDepthTextureNode;
23629 0 : info->far_ptr = & ((M_DepthImage *)node)->diTexture;
23630 0 : return GF_OK;
23631 : case 1:
23632 0 : info->name = "farPlane";
23633 0 : info->eventType = GF_SG_EVENT_FIELD;
23634 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
23635 0 : info->far_ptr = & ((M_DepthImage *) node)->farPlane;
23636 0 : return GF_OK;
23637 : case 2:
23638 0 : info->name = "fieldOfView";
23639 0 : info->eventType = GF_SG_EVENT_FIELD;
23640 0 : info->fieldType = GF_SG_VRML_SFVEC2F;
23641 0 : info->far_ptr = & ((M_DepthImage *) node)->fieldOfView;
23642 0 : return GF_OK;
23643 : case 3:
23644 0 : info->name = "nearPlane";
23645 0 : info->eventType = GF_SG_EVENT_FIELD;
23646 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
23647 0 : info->far_ptr = & ((M_DepthImage *) node)->nearPlane;
23648 0 : return GF_OK;
23649 : case 4:
23650 0 : info->name = "orientation";
23651 0 : info->eventType = GF_SG_EVENT_FIELD;
23652 0 : info->fieldType = GF_SG_VRML_SFROTATION;
23653 0 : info->far_ptr = & ((M_DepthImage *) node)->orientation;
23654 0 : return GF_OK;
23655 : case 5:
23656 0 : info->name = "orthographic";
23657 0 : info->eventType = GF_SG_EVENT_FIELD;
23658 0 : info->fieldType = GF_SG_VRML_SFBOOL;
23659 0 : info->far_ptr = & ((M_DepthImage *) node)->orthographic;
23660 0 : return GF_OK;
23661 : case 6:
23662 0 : info->name = "position";
23663 0 : info->eventType = GF_SG_EVENT_FIELD;
23664 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
23665 0 : info->far_ptr = & ((M_DepthImage *) node)->position;
23666 0 : return GF_OK;
23667 : default:
23668 0 : return GF_BAD_PARAM;
23669 : }
23670 0 : }
23671 :
23672 :
23673 : static s32 DepthImage_get_field_index_by_name(char *name)
23674 : {
23675 0 : if (!strcmp("diTexture", name)) return 0;
23676 0 : if (!strcmp("farPlane", name)) return 1;
23677 0 : if (!strcmp("fieldOfView", name)) return 2;
23678 0 : if (!strcmp("nearPlane", name)) return 3;
23679 0 : if (!strcmp("orientation", name)) return 4;
23680 0 : if (!strcmp("orthographic", name)) return 5;
23681 0 : if (!strcmp("position", name)) return 6;
23682 0 : return -1;
23683 0 : }
23684 : static Bool DepthImage_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
23685 : {
23686 : switch (FieldIndex) {
23687 : default:
23688 0 : return 0;
23689 : }
23690 : }
23691 :
23692 :
23693 :
23694 : GF_Node *DepthImage_Create()
23695 : {
23696 : M_DepthImage *p;
23697 0 : GF_SAFEALLOC(p, M_DepthImage);
23698 0 : if(!p) return NULL;
23699 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_DepthImage);
23700 :
23701 : /*default field values*/
23702 0 : p->farPlane = FLT2FIX(100);
23703 0 : p->fieldOfView.x = FLT2FIX(0.785398);
23704 0 : p->fieldOfView.y = FLT2FIX(0.785398);
23705 0 : p->nearPlane = FLT2FIX(10);
23706 0 : p->orientation.x = FLT2FIX(0);
23707 0 : p->orientation.y = FLT2FIX(0);
23708 0 : p->orientation.z = FLT2FIX(1);
23709 0 : p->orientation.q = FLT2FIX(0);
23710 0 : p->orthographic = 1;
23711 0 : p->position.x = FLT2FIX(0);
23712 0 : p->position.y = FLT2FIX(0);
23713 0 : p->position.z = FLT2FIX(10);
23714 0 : return (GF_Node *)p;
23715 0 : }
23716 :
23717 :
23718 : /*
23719 : FFD Node deletion
23720 : */
23721 :
23722 : static void FFD_Del(GF_Node *node)
23723 : {
23724 0 : M_FFD *p = (M_FFD *) node;
23725 0 : gf_sg_mfvec4f_del(p->controlPoint);
23726 0 : gf_sg_mffloat_del(p->uKnot);
23727 0 : gf_sg_mffloat_del(p->vKnot);
23728 0 : gf_sg_mffloat_del(p->wKnot);
23729 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
23730 0 : gf_node_free((GF_Node *) p);
23731 0 : }
23732 :
23733 : static const u16 FFD_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
23734 : static const u16 FFD_In2All[] = { 0, 1, 2, 3};
23735 : static const u16 FFD_Out2All[] = { 2, 3};
23736 : static const u16 FFD_Dyn2All[] = { 3};
23737 :
23738 : static u32 FFD_get_field_count(GF_Node *node, u8 IndexMode)
23739 : {
23740 0 : switch(IndexMode) {
23741 : case GF_SG_FIELD_CODING_IN:
23742 0 : return 4;
23743 : case GF_SG_FIELD_CODING_DEF:
23744 0 : return 11;
23745 : case GF_SG_FIELD_CODING_OUT:
23746 0 : return 2;
23747 : case GF_SG_FIELD_CODING_DYN:
23748 0 : return 1;
23749 : default:
23750 0 : return 13;
23751 : }
23752 0 : }
23753 :
23754 : static GF_Err FFD_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
23755 : {
23756 0 : switch(IndexMode) {
23757 : case GF_SG_FIELD_CODING_IN:
23758 0 : *allField = FFD_In2All[inField];
23759 0 : return GF_OK;
23760 : case GF_SG_FIELD_CODING_DEF:
23761 0 : *allField = FFD_Def2All[inField];
23762 0 : return GF_OK;
23763 : case GF_SG_FIELD_CODING_OUT:
23764 0 : *allField = FFD_Out2All[inField];
23765 0 : return GF_OK;
23766 : case GF_SG_FIELD_CODING_DYN:
23767 0 : *allField = FFD_Dyn2All[inField];
23768 0 : return GF_OK;
23769 : default:
23770 0 : return GF_BAD_PARAM;
23771 : }
23772 0 : }
23773 : static GF_Err FFD_get_field(GF_Node *node, GF_FieldInfo *info)
23774 : {
23775 0 : switch (info->fieldIndex) {
23776 : case 0:
23777 0 : info->name = "addChildren";
23778 0 : info->eventType = GF_SG_EVENT_IN;
23779 0 : info->on_event_in = ((M_FFD *)node)->on_addChildren;
23780 0 : info->fieldType = GF_SG_VRML_MFNODE;
23781 0 : info->NDTtype = NDT_SF3DNode;
23782 0 : info->far_ptr = & ((M_FFD *)node)->addChildren;
23783 0 : return GF_OK;
23784 : case 1:
23785 0 : info->name = "removeChildren";
23786 0 : info->eventType = GF_SG_EVENT_IN;
23787 0 : info->on_event_in = ((M_FFD *)node)->on_removeChildren;
23788 0 : info->fieldType = GF_SG_VRML_MFNODE;
23789 0 : info->NDTtype = NDT_SF3DNode;
23790 0 : info->far_ptr = & ((M_FFD *)node)->removeChildren;
23791 0 : return GF_OK;
23792 : case 2:
23793 0 : info->name = "children";
23794 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23795 0 : info->fieldType = GF_SG_VRML_MFNODE;
23796 0 : info->NDTtype = NDT_SF3DNode;
23797 0 : info->far_ptr = & ((M_FFD *)node)->children;
23798 0 : return GF_OK;
23799 : case 3:
23800 0 : info->name = "controlPoint";
23801 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23802 0 : info->fieldType = GF_SG_VRML_MFVEC4F;
23803 0 : info->far_ptr = & ((M_FFD *) node)->controlPoint;
23804 0 : return GF_OK;
23805 : case 4:
23806 0 : info->name = "uDimension";
23807 0 : info->eventType = GF_SG_EVENT_FIELD;
23808 0 : info->fieldType = GF_SG_VRML_SFINT32;
23809 0 : info->far_ptr = & ((M_FFD *) node)->uDimension;
23810 0 : return GF_OK;
23811 : case 5:
23812 0 : info->name = "uKnot";
23813 0 : info->eventType = GF_SG_EVENT_FIELD;
23814 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
23815 0 : info->far_ptr = & ((M_FFD *) node)->uKnot;
23816 0 : return GF_OK;
23817 : case 6:
23818 0 : info->name = "uOrder";
23819 0 : info->eventType = GF_SG_EVENT_FIELD;
23820 0 : info->fieldType = GF_SG_VRML_SFINT32;
23821 0 : info->far_ptr = & ((M_FFD *) node)->uOrder;
23822 0 : return GF_OK;
23823 : case 7:
23824 0 : info->name = "vDimension";
23825 0 : info->eventType = GF_SG_EVENT_FIELD;
23826 0 : info->fieldType = GF_SG_VRML_SFINT32;
23827 0 : info->far_ptr = & ((M_FFD *) node)->vDimension;
23828 0 : return GF_OK;
23829 : case 8:
23830 0 : info->name = "vKnot";
23831 0 : info->eventType = GF_SG_EVENT_FIELD;
23832 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
23833 0 : info->far_ptr = & ((M_FFD *) node)->vKnot;
23834 0 : return GF_OK;
23835 : case 9:
23836 0 : info->name = "vOrder";
23837 0 : info->eventType = GF_SG_EVENT_FIELD;
23838 0 : info->fieldType = GF_SG_VRML_SFINT32;
23839 0 : info->far_ptr = & ((M_FFD *) node)->vOrder;
23840 0 : return GF_OK;
23841 : case 10:
23842 0 : info->name = "wDimension";
23843 0 : info->eventType = GF_SG_EVENT_FIELD;
23844 0 : info->fieldType = GF_SG_VRML_SFINT32;
23845 0 : info->far_ptr = & ((M_FFD *) node)->wDimension;
23846 0 : return GF_OK;
23847 : case 11:
23848 0 : info->name = "wKnot";
23849 0 : info->eventType = GF_SG_EVENT_FIELD;
23850 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
23851 0 : info->far_ptr = & ((M_FFD *) node)->wKnot;
23852 0 : return GF_OK;
23853 : case 12:
23854 0 : info->name = "wOrder";
23855 0 : info->eventType = GF_SG_EVENT_FIELD;
23856 0 : info->fieldType = GF_SG_VRML_SFINT32;
23857 0 : info->far_ptr = & ((M_FFD *) node)->wOrder;
23858 0 : return GF_OK;
23859 : default:
23860 0 : return GF_BAD_PARAM;
23861 : }
23862 0 : }
23863 :
23864 :
23865 : static s32 FFD_get_field_index_by_name(char *name)
23866 : {
23867 0 : if (!strcmp("addChildren", name)) return 0;
23868 0 : if (!strcmp("removeChildren", name)) return 1;
23869 0 : if (!strcmp("children", name)) return 2;
23870 0 : if (!strcmp("controlPoint", name)) return 3;
23871 0 : if (!strcmp("uDimension", name)) return 4;
23872 0 : if (!strcmp("uKnot", name)) return 5;
23873 0 : if (!strcmp("uOrder", name)) return 6;
23874 0 : if (!strcmp("vDimension", name)) return 7;
23875 0 : if (!strcmp("vKnot", name)) return 8;
23876 0 : if (!strcmp("vOrder", name)) return 9;
23877 0 : if (!strcmp("wDimension", name)) return 10;
23878 0 : if (!strcmp("wKnot", name)) return 11;
23879 0 : if (!strcmp("wOrder", name)) return 12;
23880 0 : return -1;
23881 0 : }
23882 : static Bool FFD_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
23883 : {
23884 0 : switch (FieldIndex) {
23885 : case 3:
23886 0 : *AType = 15;
23887 0 : *QType = 15;
23888 0 : *b_min = FIX_MIN;
23889 0 : *b_max = FIX_MAX;
23890 0 : return 1;
23891 : case 4:
23892 0 : *AType = 0;
23893 0 : *QType = 13;
23894 0 : *QT13_bits = 8;
23895 0 : *b_min = FLT2FIX(2);
23896 0 : *b_max = FLT2FIX(257);
23897 0 : return 1;
23898 : case 6:
23899 0 : *AType = 0;
23900 0 : *QType = 13;
23901 0 : *QT13_bits = 5;
23902 0 : *b_min = FLT2FIX(2);
23903 0 : *b_max = FLT2FIX(33);
23904 0 : return 1;
23905 : case 7:
23906 0 : *AType = 0;
23907 0 : *QType = 13;
23908 0 : *QT13_bits = 8;
23909 0 : *b_min = FLT2FIX(2);
23910 0 : *b_max = FLT2FIX(257);
23911 0 : return 1;
23912 : case 9:
23913 0 : *AType = 0;
23914 0 : *QType = 13;
23915 0 : *QT13_bits = 5;
23916 0 : *b_min = FLT2FIX(2);
23917 0 : *b_max = FLT2FIX(33);
23918 0 : return 1;
23919 : case 10:
23920 0 : *AType = 0;
23921 0 : *QType = 13;
23922 0 : *QT13_bits = 8;
23923 0 : *b_min = FLT2FIX(2);
23924 0 : *b_max = FLT2FIX(257);
23925 0 : return 1;
23926 : case 12:
23927 0 : *AType = 0;
23928 0 : *QType = 13;
23929 0 : *QT13_bits = 5;
23930 0 : *b_min = FLT2FIX(2);
23931 0 : *b_max = FLT2FIX(33);
23932 0 : return 1;
23933 : default:
23934 0 : return 0;
23935 : }
23936 0 : }
23937 :
23938 :
23939 :
23940 : GF_Node *FFD_Create()
23941 : {
23942 : M_FFD *p;
23943 0 : GF_SAFEALLOC(p, M_FFD);
23944 0 : if(!p) return NULL;
23945 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FFD);
23946 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
23947 :
23948 : /*default field values*/
23949 0 : p->uDimension = 2;
23950 0 : p->uOrder = 2;
23951 0 : p->vDimension = 2;
23952 0 : p->vOrder = 2;
23953 0 : p->wDimension = 2;
23954 0 : p->wOrder = 2;
23955 0 : return (GF_Node *)p;
23956 0 : }
23957 :
23958 :
23959 : /*
23960 : Implicit Node deletion
23961 : */
23962 :
23963 : static void Implicit_Del(GF_Node *node)
23964 : {
23965 0 : M_Implicit *p = (M_Implicit *) node;
23966 0 : gf_sg_mffloat_del(p->c);
23967 0 : gf_sg_mfint32_del(p->densities);
23968 0 : gf_node_free((GF_Node *) p);
23969 0 : }
23970 :
23971 : static const u16 Implicit_Def2All[] = { 0, 1, 2, 3, 4};
23972 : static const u16 Implicit_In2All[] = { 0, 1, 2, 3, 4};
23973 : static const u16 Implicit_Out2All[] = { 0, 1, 2, 3, 4};
23974 : static const u16 Implicit_Dyn2All[] = { 0, 1};
23975 :
23976 : static u32 Implicit_get_field_count(GF_Node *node, u8 IndexMode)
23977 : {
23978 0 : switch(IndexMode) {
23979 : case GF_SG_FIELD_CODING_IN:
23980 0 : return 5;
23981 : case GF_SG_FIELD_CODING_DEF:
23982 0 : return 5;
23983 : case GF_SG_FIELD_CODING_OUT:
23984 0 : return 5;
23985 : case GF_SG_FIELD_CODING_DYN:
23986 0 : return 2;
23987 : default:
23988 0 : return 5;
23989 : }
23990 0 : }
23991 :
23992 : static GF_Err Implicit_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
23993 : {
23994 0 : switch(IndexMode) {
23995 : case GF_SG_FIELD_CODING_IN:
23996 0 : *allField = Implicit_In2All[inField];
23997 0 : return GF_OK;
23998 : case GF_SG_FIELD_CODING_DEF:
23999 0 : *allField = Implicit_Def2All[inField];
24000 0 : return GF_OK;
24001 : case GF_SG_FIELD_CODING_OUT:
24002 0 : *allField = Implicit_Out2All[inField];
24003 0 : return GF_OK;
24004 : case GF_SG_FIELD_CODING_DYN:
24005 0 : *allField = Implicit_Dyn2All[inField];
24006 0 : return GF_OK;
24007 : default:
24008 0 : return GF_BAD_PARAM;
24009 : }
24010 0 : }
24011 : static GF_Err Implicit_get_field(GF_Node *node, GF_FieldInfo *info)
24012 : {
24013 0 : switch (info->fieldIndex) {
24014 : case 0:
24015 0 : info->name = "bboxSize";
24016 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24017 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
24018 0 : info->far_ptr = & ((M_Implicit *) node)->bboxSize;
24019 0 : return GF_OK;
24020 : case 1:
24021 0 : info->name = "c";
24022 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24023 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
24024 0 : info->far_ptr = & ((M_Implicit *) node)->c;
24025 0 : return GF_OK;
24026 : case 2:
24027 0 : info->name = "densities";
24028 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24029 0 : info->fieldType = GF_SG_VRML_MFINT32;
24030 0 : info->far_ptr = & ((M_Implicit *) node)->densities;
24031 0 : return GF_OK;
24032 : case 3:
24033 0 : info->name = "dual";
24034 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24035 0 : info->fieldType = GF_SG_VRML_SFBOOL;
24036 0 : info->far_ptr = & ((M_Implicit *) node)->dual;
24037 0 : return GF_OK;
24038 : case 4:
24039 0 : info->name = "solid";
24040 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24041 0 : info->fieldType = GF_SG_VRML_SFBOOL;
24042 0 : info->far_ptr = & ((M_Implicit *) node)->solid;
24043 0 : return GF_OK;
24044 : default:
24045 0 : return GF_BAD_PARAM;
24046 : }
24047 0 : }
24048 :
24049 :
24050 : static s32 Implicit_get_field_index_by_name(char *name)
24051 : {
24052 0 : if (!strcmp("bboxSize", name)) return 0;
24053 0 : if (!strcmp("c", name)) return 1;
24054 0 : if (!strcmp("densities", name)) return 2;
24055 0 : if (!strcmp("dual", name)) return 3;
24056 0 : if (!strcmp("solid", name)) return 4;
24057 0 : return -1;
24058 0 : }
24059 : static Bool Implicit_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
24060 : {
24061 0 : switch (FieldIndex) {
24062 : case 0:
24063 0 : *AType = 11;
24064 0 : *QType = 11;
24065 0 : *b_min = FLT2FIX(0);
24066 0 : *b_max = FIX_MAX;
24067 0 : return 1;
24068 : case 1:
24069 0 : *AType = 7;
24070 0 : *QType = 0;
24071 0 : *b_min = FIX_MIN;
24072 0 : *b_max = FIX_MAX;
24073 0 : return 1;
24074 : default:
24075 0 : return 0;
24076 : }
24077 0 : }
24078 :
24079 :
24080 :
24081 : GF_Node *Implicit_Create()
24082 : {
24083 : M_Implicit *p;
24084 0 : GF_SAFEALLOC(p, M_Implicit);
24085 0 : if(!p) return NULL;
24086 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Implicit);
24087 :
24088 : /*default field values*/
24089 0 : p->bboxSize.x = FLT2FIX(2);
24090 0 : p->bboxSize.y = FLT2FIX(2);
24091 0 : p->bboxSize.z = FLT2FIX(2);
24092 0 : return (GF_Node *)p;
24093 0 : }
24094 :
24095 :
24096 : /*
24097 : XXLFM_Appearance Node deletion
24098 : */
24099 :
24100 : static void XXLFM_Appearance_Del(GF_Node *node)
24101 : {
24102 0 : M_XXLFM_Appearance *p = (M_XXLFM_Appearance *) node;
24103 0 : gf_node_unregister((GF_Node *) p->blendList, (GF_Node *) p);
24104 0 : gf_node_unregister_children((GF_Node *) p, p->lightMapList);
24105 0 : gf_node_unregister_children((GF_Node *) p, p->tileList);
24106 0 : gf_node_unregister((GF_Node *) p->vertexFrameList, (GF_Node *) p);
24107 0 : gf_node_free((GF_Node *) p);
24108 0 : }
24109 :
24110 : static const u16 XXLFM_Appearance_Def2All[] = { 0, 1, 2, 3};
24111 : static const u16 XXLFM_Appearance_In2All[] = { 0, 1, 2, 3};
24112 : static const u16 XXLFM_Appearance_Out2All[] = { 0, 1, 2, 3};
24113 :
24114 : static u32 XXLFM_Appearance_get_field_count(GF_Node *node, u8 IndexMode)
24115 : {
24116 0 : switch(IndexMode) {
24117 : case GF_SG_FIELD_CODING_IN:
24118 0 : return 4;
24119 : case GF_SG_FIELD_CODING_DEF:
24120 0 : return 4;
24121 : case GF_SG_FIELD_CODING_OUT:
24122 0 : return 4;
24123 : case GF_SG_FIELD_CODING_DYN:
24124 0 : return 0;
24125 : default:
24126 0 : return 4;
24127 : }
24128 0 : }
24129 :
24130 : static GF_Err XXLFM_Appearance_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
24131 : {
24132 0 : switch(IndexMode) {
24133 : case GF_SG_FIELD_CODING_IN:
24134 0 : *allField = XXLFM_Appearance_In2All[inField];
24135 0 : return GF_OK;
24136 : case GF_SG_FIELD_CODING_DEF:
24137 0 : *allField = XXLFM_Appearance_Def2All[inField];
24138 0 : return GF_OK;
24139 : case GF_SG_FIELD_CODING_OUT:
24140 0 : *allField = XXLFM_Appearance_Out2All[inField];
24141 0 : return GF_OK;
24142 : default:
24143 0 : return GF_BAD_PARAM;
24144 : }
24145 0 : }
24146 : static GF_Err XXLFM_Appearance_get_field(GF_Node *node, GF_FieldInfo *info)
24147 : {
24148 0 : switch (info->fieldIndex) {
24149 : case 0:
24150 0 : info->name = "blendList";
24151 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24152 0 : info->fieldType = GF_SG_VRML_SFNODE;
24153 0 : info->NDTtype = NDT_SFBlendListNode;
24154 0 : info->far_ptr = & ((M_XXLFM_Appearance *)node)->blendList;
24155 0 : return GF_OK;
24156 : case 1:
24157 0 : info->name = "lightMapList";
24158 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24159 0 : info->fieldType = GF_SG_VRML_MFNODE;
24160 0 : info->NDTtype = NDT_SFLightMapNode;
24161 0 : info->far_ptr = & ((M_XXLFM_Appearance *)node)->lightMapList;
24162 0 : return GF_OK;
24163 : case 2:
24164 0 : info->name = "tileList";
24165 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24166 0 : info->fieldType = GF_SG_VRML_MFNODE;
24167 0 : info->NDTtype = NDT_SFTextureNode;
24168 0 : info->far_ptr = & ((M_XXLFM_Appearance *)node)->tileList;
24169 0 : return GF_OK;
24170 : case 3:
24171 0 : info->name = "vertexFrameList";
24172 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24173 0 : info->fieldType = GF_SG_VRML_SFNODE;
24174 0 : info->NDTtype = NDT_SFFrameListNode;
24175 0 : info->far_ptr = & ((M_XXLFM_Appearance *)node)->vertexFrameList;
24176 0 : return GF_OK;
24177 : default:
24178 0 : return GF_BAD_PARAM;
24179 : }
24180 0 : }
24181 :
24182 :
24183 : static s32 XXLFM_Appearance_get_field_index_by_name(char *name)
24184 : {
24185 0 : if (!strcmp("blendList", name)) return 0;
24186 0 : if (!strcmp("lightMapList", name)) return 1;
24187 0 : if (!strcmp("tileList", name)) return 2;
24188 0 : if (!strcmp("vertexFrameList", name)) return 3;
24189 0 : return -1;
24190 0 : }
24191 : static Bool XXLFM_Appearance_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
24192 : {
24193 : switch (FieldIndex) {
24194 : default:
24195 0 : return 0;
24196 : }
24197 : }
24198 :
24199 :
24200 :
24201 : GF_Node *XXLFM_Appearance_Create()
24202 : {
24203 : M_XXLFM_Appearance *p;
24204 0 : GF_SAFEALLOC(p, M_XXLFM_Appearance);
24205 0 : if(!p) return NULL;
24206 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_Appearance);
24207 :
24208 : /*default field values*/
24209 0 : return (GF_Node *)p;
24210 0 : }
24211 :
24212 :
24213 : /*
24214 : XXLFM_BlendList Node deletion
24215 : */
24216 :
24217 : static void XXLFM_BlendList_Del(GF_Node *node)
24218 : {
24219 0 : M_XXLFM_BlendList *p = (M_XXLFM_BlendList *) node;
24220 0 : gf_sg_mfint32_del(p->blendMode);
24221 0 : gf_sg_mfint32_del(p->lightMapIndex);
24222 0 : gf_node_free((GF_Node *) p);
24223 0 : }
24224 :
24225 : static const u16 XXLFM_BlendList_Def2All[] = { 0, 1};
24226 : static const u16 XXLFM_BlendList_In2All[] = { 0, 1};
24227 : static const u16 XXLFM_BlendList_Out2All[] = { 0, 1};
24228 :
24229 : static u32 XXLFM_BlendList_get_field_count(GF_Node *node, u8 IndexMode)
24230 : {
24231 0 : switch(IndexMode) {
24232 : case GF_SG_FIELD_CODING_IN:
24233 0 : return 2;
24234 : case GF_SG_FIELD_CODING_DEF:
24235 0 : return 2;
24236 : case GF_SG_FIELD_CODING_OUT:
24237 0 : return 2;
24238 : case GF_SG_FIELD_CODING_DYN:
24239 0 : return 0;
24240 : default:
24241 0 : return 2;
24242 : }
24243 0 : }
24244 :
24245 : static GF_Err XXLFM_BlendList_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
24246 : {
24247 0 : switch(IndexMode) {
24248 : case GF_SG_FIELD_CODING_IN:
24249 0 : *allField = XXLFM_BlendList_In2All[inField];
24250 0 : return GF_OK;
24251 : case GF_SG_FIELD_CODING_DEF:
24252 0 : *allField = XXLFM_BlendList_Def2All[inField];
24253 0 : return GF_OK;
24254 : case GF_SG_FIELD_CODING_OUT:
24255 0 : *allField = XXLFM_BlendList_Out2All[inField];
24256 0 : return GF_OK;
24257 : default:
24258 0 : return GF_BAD_PARAM;
24259 : }
24260 0 : }
24261 : static GF_Err XXLFM_BlendList_get_field(GF_Node *node, GF_FieldInfo *info)
24262 : {
24263 0 : switch (info->fieldIndex) {
24264 : case 0:
24265 0 : info->name = "blendMode";
24266 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24267 0 : info->fieldType = GF_SG_VRML_MFINT32;
24268 0 : info->far_ptr = & ((M_XXLFM_BlendList *) node)->blendMode;
24269 0 : return GF_OK;
24270 : case 1:
24271 0 : info->name = "lightMapIndex";
24272 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24273 0 : info->fieldType = GF_SG_VRML_MFINT32;
24274 0 : info->far_ptr = & ((M_XXLFM_BlendList *) node)->lightMapIndex;
24275 0 : return GF_OK;
24276 : default:
24277 0 : return GF_BAD_PARAM;
24278 : }
24279 0 : }
24280 :
24281 :
24282 : static s32 XXLFM_BlendList_get_field_index_by_name(char *name)
24283 : {
24284 0 : if (!strcmp("blendMode", name)) return 0;
24285 0 : if (!strcmp("lightMapIndex", name)) return 1;
24286 0 : return -1;
24287 0 : }
24288 : static Bool XXLFM_BlendList_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
24289 : {
24290 0 : switch (FieldIndex) {
24291 : case 0:
24292 0 : *AType = 0;
24293 0 : *QType = 13;
24294 0 : *QT13_bits = 1;
24295 0 : *b_min = FLT2FIX(0);
24296 0 : *b_max = FLT2FIX(1);
24297 0 : return 1;
24298 : case 1:
24299 0 : *AType = 0;
24300 0 : *QType = 14;
24301 0 : return 1;
24302 : default:
24303 0 : return 0;
24304 : }
24305 0 : }
24306 :
24307 :
24308 :
24309 : GF_Node *XXLFM_BlendList_Create()
24310 : {
24311 : M_XXLFM_BlendList *p;
24312 0 : GF_SAFEALLOC(p, M_XXLFM_BlendList);
24313 0 : if(!p) return NULL;
24314 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_BlendList);
24315 :
24316 : /*default field values*/
24317 0 : return (GF_Node *)p;
24318 0 : }
24319 :
24320 :
24321 : /*
24322 : XXLFM_FrameList Node deletion
24323 : */
24324 :
24325 : static void XXLFM_FrameList_Del(GF_Node *node)
24326 : {
24327 0 : M_XXLFM_FrameList *p = (M_XXLFM_FrameList *) node;
24328 0 : gf_sg_mfint32_del(p->index);
24329 0 : gf_sg_mfvec3f_del(p->frame);
24330 0 : gf_node_free((GF_Node *) p);
24331 0 : }
24332 :
24333 : static const u16 XXLFM_FrameList_Def2All[] = { 0, 1};
24334 : static const u16 XXLFM_FrameList_In2All[] = { 0, 1};
24335 : static const u16 XXLFM_FrameList_Out2All[] = { 0, 1};
24336 :
24337 : static u32 XXLFM_FrameList_get_field_count(GF_Node *node, u8 IndexMode)
24338 : {
24339 0 : switch(IndexMode) {
24340 : case GF_SG_FIELD_CODING_IN:
24341 0 : return 2;
24342 : case GF_SG_FIELD_CODING_DEF:
24343 0 : return 2;
24344 : case GF_SG_FIELD_CODING_OUT:
24345 0 : return 2;
24346 : case GF_SG_FIELD_CODING_DYN:
24347 0 : return 0;
24348 : default:
24349 0 : return 2;
24350 : }
24351 0 : }
24352 :
24353 : static GF_Err XXLFM_FrameList_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
24354 : {
24355 0 : switch(IndexMode) {
24356 : case GF_SG_FIELD_CODING_IN:
24357 0 : *allField = XXLFM_FrameList_In2All[inField];
24358 0 : return GF_OK;
24359 : case GF_SG_FIELD_CODING_DEF:
24360 0 : *allField = XXLFM_FrameList_Def2All[inField];
24361 0 : return GF_OK;
24362 : case GF_SG_FIELD_CODING_OUT:
24363 0 : *allField = XXLFM_FrameList_Out2All[inField];
24364 0 : return GF_OK;
24365 : default:
24366 0 : return GF_BAD_PARAM;
24367 : }
24368 0 : }
24369 : static GF_Err XXLFM_FrameList_get_field(GF_Node *node, GF_FieldInfo *info)
24370 : {
24371 0 : switch (info->fieldIndex) {
24372 : case 0:
24373 0 : info->name = "index";
24374 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24375 0 : info->fieldType = GF_SG_VRML_MFINT32;
24376 0 : info->far_ptr = & ((M_XXLFM_FrameList *) node)->index;
24377 0 : return GF_OK;
24378 : case 1:
24379 0 : info->name = "frame";
24380 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24381 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
24382 0 : info->far_ptr = & ((M_XXLFM_FrameList *) node)->frame;
24383 0 : return GF_OK;
24384 : default:
24385 0 : return GF_BAD_PARAM;
24386 : }
24387 0 : }
24388 :
24389 :
24390 : static s32 XXLFM_FrameList_get_field_index_by_name(char *name)
24391 : {
24392 0 : if (!strcmp("index", name)) return 0;
24393 0 : if (!strcmp("frame", name)) return 1;
24394 0 : return -1;
24395 0 : }
24396 : static Bool XXLFM_FrameList_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
24397 : {
24398 0 : switch (FieldIndex) {
24399 : case 0:
24400 0 : *AType = 0;
24401 0 : *QType = 14;
24402 0 : return 1;
24403 : case 1:
24404 0 : *AType = 0;
24405 0 : *QType = 1;
24406 0 : *b_min = FLT2FIX(-1);
24407 0 : *b_max = FLT2FIX(1);
24408 0 : return 1;
24409 : default:
24410 0 : return 0;
24411 : }
24412 0 : }
24413 :
24414 :
24415 :
24416 : GF_Node *XXLFM_FrameList_Create()
24417 : {
24418 : M_XXLFM_FrameList *p;
24419 0 : GF_SAFEALLOC(p, M_XXLFM_FrameList);
24420 0 : if(!p) return NULL;
24421 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_FrameList);
24422 :
24423 : /*default field values*/
24424 0 : p->index.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
24425 0 : p->index.count = 1;
24426 0 : p->index.vals[0] = -1;
24427 0 : p->frame.vals = (SFVec3f *)gf_malloc(sizeof(SFVec3f)*3);
24428 0 : p->frame.count = 3;
24429 0 : p->frame.vals[0].x = FLT2FIX(1);
24430 0 : p->frame.vals[0].y = FLT2FIX(0);
24431 0 : p->frame.vals[0].z = FLT2FIX(0);
24432 0 : p->frame.vals[1].x = FLT2FIX(0);
24433 0 : p->frame.vals[1].y = FLT2FIX(1);
24434 0 : p->frame.vals[1].z = FLT2FIX(0);
24435 0 : p->frame.vals[2].x = FLT2FIX(0);
24436 0 : p->frame.vals[2].y = FLT2FIX(0);
24437 0 : p->frame.vals[2].z = FLT2FIX(1);
24438 0 : return (GF_Node *)p;
24439 0 : }
24440 :
24441 :
24442 : /*
24443 : XXLFM_LightMap Node deletion
24444 : */
24445 :
24446 : static void XXLFM_LightMap_Del(GF_Node *node)
24447 : {
24448 0 : M_XXLFM_LightMap *p = (M_XXLFM_LightMap *) node;
24449 0 : gf_node_unregister((GF_Node *) p->surfaceMapList, (GF_Node *) p);
24450 0 : gf_node_unregister((GF_Node *) p->viewMapList, (GF_Node *) p);
24451 0 : gf_node_free((GF_Node *) p);
24452 0 : }
24453 :
24454 : static const u16 XXLFM_LightMap_Def2All[] = { 0, 1, 2, 3, 4};
24455 : static const u16 XXLFM_LightMap_In2All[] = { 0, 1, 2, 3, 4};
24456 : static const u16 XXLFM_LightMap_Out2All[] = { 0, 1, 2, 3, 4};
24457 :
24458 : static u32 XXLFM_LightMap_get_field_count(GF_Node *node, u8 IndexMode)
24459 : {
24460 0 : switch(IndexMode) {
24461 : case GF_SG_FIELD_CODING_IN:
24462 0 : return 5;
24463 : case GF_SG_FIELD_CODING_DEF:
24464 0 : return 5;
24465 : case GF_SG_FIELD_CODING_OUT:
24466 0 : return 5;
24467 : case GF_SG_FIELD_CODING_DYN:
24468 0 : return 0;
24469 : default:
24470 0 : return 5;
24471 : }
24472 0 : }
24473 :
24474 : static GF_Err XXLFM_LightMap_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
24475 : {
24476 0 : switch(IndexMode) {
24477 : case GF_SG_FIELD_CODING_IN:
24478 0 : *allField = XXLFM_LightMap_In2All[inField];
24479 0 : return GF_OK;
24480 : case GF_SG_FIELD_CODING_DEF:
24481 0 : *allField = XXLFM_LightMap_Def2All[inField];
24482 0 : return GF_OK;
24483 : case GF_SG_FIELD_CODING_OUT:
24484 0 : *allField = XXLFM_LightMap_Out2All[inField];
24485 0 : return GF_OK;
24486 : default:
24487 0 : return GF_BAD_PARAM;
24488 : }
24489 0 : }
24490 : static GF_Err XXLFM_LightMap_get_field(GF_Node *node, GF_FieldInfo *info)
24491 : {
24492 0 : switch (info->fieldIndex) {
24493 : case 0:
24494 0 : info->name = "biasRGB";
24495 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24496 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
24497 0 : info->far_ptr = & ((M_XXLFM_LightMap *) node)->biasRGB;
24498 0 : return GF_OK;
24499 : case 1:
24500 0 : info->name = "priorityLevel";
24501 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24502 0 : info->fieldType = GF_SG_VRML_SFINT32;
24503 0 : info->far_ptr = & ((M_XXLFM_LightMap *) node)->priorityLevel;
24504 0 : return GF_OK;
24505 : case 2:
24506 0 : info->name = "scaleRGB";
24507 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24508 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
24509 0 : info->far_ptr = & ((M_XXLFM_LightMap *) node)->scaleRGB;
24510 0 : return GF_OK;
24511 : case 3:
24512 0 : info->name = "surfaceMapList";
24513 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24514 0 : info->fieldType = GF_SG_VRML_SFNODE;
24515 0 : info->NDTtype = NDT_SFSurfaceMapNode;
24516 0 : info->far_ptr = & ((M_XXLFM_LightMap *)node)->surfaceMapList;
24517 0 : return GF_OK;
24518 : case 4:
24519 0 : info->name = "viewMapList";
24520 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24521 0 : info->fieldType = GF_SG_VRML_SFNODE;
24522 0 : info->NDTtype = NDT_SFViewMapNode;
24523 0 : info->far_ptr = & ((M_XXLFM_LightMap *)node)->viewMapList;
24524 0 : return GF_OK;
24525 : default:
24526 0 : return GF_BAD_PARAM;
24527 : }
24528 0 : }
24529 :
24530 :
24531 : static s32 XXLFM_LightMap_get_field_index_by_name(char *name)
24532 : {
24533 0 : if (!strcmp("biasRGB", name)) return 0;
24534 0 : if (!strcmp("priorityLevel", name)) return 1;
24535 0 : if (!strcmp("scaleRGB", name)) return 2;
24536 0 : if (!strcmp("surfaceMapList", name)) return 3;
24537 0 : if (!strcmp("viewMapList", name)) return 4;
24538 0 : return -1;
24539 0 : }
24540 : static Bool XXLFM_LightMap_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
24541 : {
24542 0 : switch (FieldIndex) {
24543 : case 0:
24544 0 : *AType = 0;
24545 0 : *QType = 7;
24546 0 : *b_min = FLT2FIX(-1);
24547 0 : *b_max = FLT2FIX(1);
24548 0 : return 1;
24549 : case 1:
24550 0 : *AType = 0;
24551 0 : *QType = 13;
24552 0 : *QT13_bits = 8;
24553 0 : *b_min = FLT2FIX(0);
24554 0 : *b_max = FLT2FIX(255);
24555 0 : return 1;
24556 : case 2:
24557 0 : *AType = 0;
24558 0 : *QType = 7;
24559 0 : *b_min = FLT2FIX(-1);
24560 0 : *b_max = FLT2FIX(1);
24561 0 : return 1;
24562 : default:
24563 0 : return 0;
24564 : }
24565 0 : }
24566 :
24567 :
24568 :
24569 : GF_Node *XXLFM_LightMap_Create()
24570 : {
24571 : M_XXLFM_LightMap *p;
24572 0 : GF_SAFEALLOC(p, M_XXLFM_LightMap);
24573 0 : if(!p) return NULL;
24574 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_LightMap);
24575 :
24576 : /*default field values*/
24577 0 : p->biasRGB.x = FLT2FIX(0);
24578 0 : p->biasRGB.y = FLT2FIX(0);
24579 0 : p->biasRGB.z = FLT2FIX(0);
24580 0 : p->priorityLevel = 0;
24581 0 : p->scaleRGB.x = FLT2FIX(1);
24582 0 : p->scaleRGB.y = FLT2FIX(1);
24583 0 : p->scaleRGB.z = FLT2FIX(1);
24584 0 : return (GF_Node *)p;
24585 0 : }
24586 :
24587 :
24588 : /*
24589 : XXLFM_SurfaceMapList Node deletion
24590 : */
24591 :
24592 : static void XXLFM_SurfaceMapList_Del(GF_Node *node)
24593 : {
24594 0 : M_XXLFM_SurfaceMapList *p = (M_XXLFM_SurfaceMapList *) node;
24595 0 : gf_sg_mfint32_del(p->tileIndex);
24596 0 : gf_node_unregister((GF_Node *) p->triangleCoordinate, (GF_Node *) p);
24597 0 : gf_sg_mfint32_del(p->triangleIndex);
24598 0 : gf_sg_mfint32_del(p->viewMapIndex);
24599 0 : gf_node_free((GF_Node *) p);
24600 0 : }
24601 :
24602 : static const u16 XXLFM_SurfaceMapList_Def2All[] = { 0, 1, 2, 3};
24603 : static const u16 XXLFM_SurfaceMapList_In2All[] = { 0, 1, 2, 3};
24604 : static const u16 XXLFM_SurfaceMapList_Out2All[] = { 0, 1, 2, 3};
24605 :
24606 : static u32 XXLFM_SurfaceMapList_get_field_count(GF_Node *node, u8 IndexMode)
24607 : {
24608 0 : switch(IndexMode) {
24609 : case GF_SG_FIELD_CODING_IN:
24610 0 : return 4;
24611 : case GF_SG_FIELD_CODING_DEF:
24612 0 : return 4;
24613 : case GF_SG_FIELD_CODING_OUT:
24614 0 : return 4;
24615 : case GF_SG_FIELD_CODING_DYN:
24616 0 : return 0;
24617 : default:
24618 0 : return 4;
24619 : }
24620 0 : }
24621 :
24622 : static GF_Err XXLFM_SurfaceMapList_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
24623 : {
24624 0 : switch(IndexMode) {
24625 : case GF_SG_FIELD_CODING_IN:
24626 0 : *allField = XXLFM_SurfaceMapList_In2All[inField];
24627 0 : return GF_OK;
24628 : case GF_SG_FIELD_CODING_DEF:
24629 0 : *allField = XXLFM_SurfaceMapList_Def2All[inField];
24630 0 : return GF_OK;
24631 : case GF_SG_FIELD_CODING_OUT:
24632 0 : *allField = XXLFM_SurfaceMapList_Out2All[inField];
24633 0 : return GF_OK;
24634 : default:
24635 0 : return GF_BAD_PARAM;
24636 : }
24637 0 : }
24638 : static GF_Err XXLFM_SurfaceMapList_get_field(GF_Node *node, GF_FieldInfo *info)
24639 : {
24640 0 : switch (info->fieldIndex) {
24641 : case 0:
24642 0 : info->name = "tileIndex";
24643 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24644 0 : info->fieldType = GF_SG_VRML_MFINT32;
24645 0 : info->far_ptr = & ((M_XXLFM_SurfaceMapList *) node)->tileIndex;
24646 0 : return GF_OK;
24647 : case 1:
24648 0 : info->name = "triangleCoordinate";
24649 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24650 0 : info->fieldType = GF_SG_VRML_SFNODE;
24651 0 : info->NDTtype = NDT_SFTextureCoordinateNode;
24652 0 : info->far_ptr = & ((M_XXLFM_SurfaceMapList *)node)->triangleCoordinate;
24653 0 : return GF_OK;
24654 : case 2:
24655 0 : info->name = "triangleIndex";
24656 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24657 0 : info->fieldType = GF_SG_VRML_MFINT32;
24658 0 : info->far_ptr = & ((M_XXLFM_SurfaceMapList *) node)->triangleIndex;
24659 0 : return GF_OK;
24660 : case 3:
24661 0 : info->name = "viewMapIndex";
24662 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24663 0 : info->fieldType = GF_SG_VRML_MFINT32;
24664 0 : info->far_ptr = & ((M_XXLFM_SurfaceMapList *) node)->viewMapIndex;
24665 0 : return GF_OK;
24666 : default:
24667 0 : return GF_BAD_PARAM;
24668 : }
24669 0 : }
24670 :
24671 :
24672 : static s32 XXLFM_SurfaceMapList_get_field_index_by_name(char *name)
24673 : {
24674 0 : if (!strcmp("tileIndex", name)) return 0;
24675 0 : if (!strcmp("triangleCoordinate", name)) return 1;
24676 0 : if (!strcmp("triangleIndex", name)) return 2;
24677 0 : if (!strcmp("viewMapIndex", name)) return 3;
24678 0 : return -1;
24679 0 : }
24680 : static Bool XXLFM_SurfaceMapList_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
24681 : {
24682 0 : switch (FieldIndex) {
24683 : case 0:
24684 0 : *AType = 0;
24685 0 : *QType = 14;
24686 0 : return 1;
24687 : case 2:
24688 0 : *AType = 0;
24689 0 : *QType = 14;
24690 0 : return 1;
24691 : case 3:
24692 0 : *AType = 0;
24693 0 : *QType = 14;
24694 0 : return 1;
24695 : default:
24696 0 : return 0;
24697 : }
24698 0 : }
24699 :
24700 :
24701 :
24702 : GF_Node *XXLFM_SurfaceMapList_Create()
24703 : {
24704 : M_XXLFM_SurfaceMapList *p;
24705 0 : GF_SAFEALLOC(p, M_XXLFM_SurfaceMapList);
24706 0 : if(!p) return NULL;
24707 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_SurfaceMapList);
24708 :
24709 : /*default field values*/
24710 0 : return (GF_Node *)p;
24711 0 : }
24712 :
24713 :
24714 : /*
24715 : XXLFM_ViewMapList Node deletion
24716 : */
24717 :
24718 : static void XXLFM_ViewMapList_Del(GF_Node *node)
24719 : {
24720 0 : M_XXLFM_ViewMapList *p = (M_XXLFM_ViewMapList *) node;
24721 0 : gf_node_unregister((GF_Node *) p->textureOrigin, (GF_Node *) p);
24722 0 : gf_node_unregister((GF_Node *) p->textureSize, (GF_Node *) p);
24723 0 : gf_sg_mfint32_del(p->tileIndex);
24724 0 : gf_sg_mfint32_del(p->vertexIndex);
24725 0 : gf_node_free((GF_Node *) p);
24726 0 : }
24727 :
24728 : static const u16 XXLFM_ViewMapList_Def2All[] = { 0, 1, 2, 3};
24729 : static const u16 XXLFM_ViewMapList_In2All[] = { 0, 1, 2, 3};
24730 : static const u16 XXLFM_ViewMapList_Out2All[] = { 0, 1, 2, 3};
24731 :
24732 : static u32 XXLFM_ViewMapList_get_field_count(GF_Node *node, u8 IndexMode)
24733 : {
24734 0 : switch(IndexMode) {
24735 : case GF_SG_FIELD_CODING_IN:
24736 0 : return 4;
24737 : case GF_SG_FIELD_CODING_DEF:
24738 0 : return 4;
24739 : case GF_SG_FIELD_CODING_OUT:
24740 0 : return 4;
24741 : case GF_SG_FIELD_CODING_DYN:
24742 0 : return 0;
24743 : default:
24744 0 : return 4;
24745 : }
24746 0 : }
24747 :
24748 : static GF_Err XXLFM_ViewMapList_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
24749 : {
24750 0 : switch(IndexMode) {
24751 : case GF_SG_FIELD_CODING_IN:
24752 0 : *allField = XXLFM_ViewMapList_In2All[inField];
24753 0 : return GF_OK;
24754 : case GF_SG_FIELD_CODING_DEF:
24755 0 : *allField = XXLFM_ViewMapList_Def2All[inField];
24756 0 : return GF_OK;
24757 : case GF_SG_FIELD_CODING_OUT:
24758 0 : *allField = XXLFM_ViewMapList_Out2All[inField];
24759 0 : return GF_OK;
24760 : default:
24761 0 : return GF_BAD_PARAM;
24762 : }
24763 0 : }
24764 : static GF_Err XXLFM_ViewMapList_get_field(GF_Node *node, GF_FieldInfo *info)
24765 : {
24766 0 : switch (info->fieldIndex) {
24767 : case 0:
24768 0 : info->name = "textureOrigin";
24769 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24770 0 : info->fieldType = GF_SG_VRML_SFNODE;
24771 0 : info->NDTtype = NDT_SFTextureCoordinateNode;
24772 0 : info->far_ptr = & ((M_XXLFM_ViewMapList *)node)->textureOrigin;
24773 0 : return GF_OK;
24774 : case 1:
24775 0 : info->name = "textureSize";
24776 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24777 0 : info->fieldType = GF_SG_VRML_SFNODE;
24778 0 : info->NDTtype = NDT_SFTextureCoordinateNode;
24779 0 : info->far_ptr = & ((M_XXLFM_ViewMapList *)node)->textureSize;
24780 0 : return GF_OK;
24781 : case 2:
24782 0 : info->name = "tileIndex";
24783 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24784 0 : info->fieldType = GF_SG_VRML_MFINT32;
24785 0 : info->far_ptr = & ((M_XXLFM_ViewMapList *) node)->tileIndex;
24786 0 : return GF_OK;
24787 : case 3:
24788 0 : info->name = "vertexIndex";
24789 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24790 0 : info->fieldType = GF_SG_VRML_MFINT32;
24791 0 : info->far_ptr = & ((M_XXLFM_ViewMapList *) node)->vertexIndex;
24792 0 : return GF_OK;
24793 : default:
24794 0 : return GF_BAD_PARAM;
24795 : }
24796 0 : }
24797 :
24798 :
24799 : static s32 XXLFM_ViewMapList_get_field_index_by_name(char *name)
24800 : {
24801 0 : if (!strcmp("textureOrigin", name)) return 0;
24802 0 : if (!strcmp("textureSize", name)) return 1;
24803 0 : if (!strcmp("tileIndex", name)) return 2;
24804 0 : if (!strcmp("vertexIndex", name)) return 3;
24805 0 : return -1;
24806 0 : }
24807 : static Bool XXLFM_ViewMapList_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
24808 : {
24809 0 : switch (FieldIndex) {
24810 : case 2:
24811 0 : *AType = 0;
24812 0 : *QType = 14;
24813 0 : return 1;
24814 : case 3:
24815 0 : *AType = 0;
24816 0 : *QType = 14;
24817 0 : return 1;
24818 : default:
24819 0 : return 0;
24820 : }
24821 0 : }
24822 :
24823 :
24824 :
24825 : GF_Node *XXLFM_ViewMapList_Create()
24826 : {
24827 : M_XXLFM_ViewMapList *p;
24828 0 : GF_SAFEALLOC(p, M_XXLFM_ViewMapList);
24829 0 : if(!p) return NULL;
24830 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_ViewMapList);
24831 :
24832 : /*default field values*/
24833 0 : return (GF_Node *)p;
24834 0 : }
24835 :
24836 :
24837 : /*
24838 : MeshGrid Node deletion
24839 : */
24840 :
24841 : static void MeshGrid_Del(GF_Node *node)
24842 : {
24843 0 : M_MeshGrid *p = (M_MeshGrid *) node;
24844 0 : gf_sg_mfint32_del(p->set_colorIndex);
24845 0 : gf_sg_mfint32_del(p->set_coordIndex);
24846 0 : gf_sg_mfint32_del(p->set_normalIndex);
24847 0 : gf_sg_mfint32_del(p->set_texCoordIndex);
24848 0 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
24849 0 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
24850 0 : gf_node_unregister((GF_Node *) p->gridCoord, (GF_Node *) p);
24851 0 : gf_sg_mfint32_del(p->nLevels);
24852 0 : gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
24853 0 : gf_sg_mfint32_del(p->nSlices);
24854 0 : gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
24855 0 : gf_sg_mffloat_del(p->vertexOffset);
24856 0 : gf_sg_mfint32_del(p->vertexLink);
24857 0 : gf_sg_mfint32_del(p->colorIndex);
24858 0 : gf_sg_mfint32_del(p->coordIndex);
24859 0 : gf_sg_mfint32_del(p->normalIndex);
24860 0 : gf_sg_mfint32_del(p->texCoordIndex);
24861 0 : gf_sg_mfint32_del(p->nVertices);
24862 0 : gf_node_free((GF_Node *) p);
24863 0 : }
24864 :
24865 : static const u16 MeshGrid_Def2All[] = { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
24866 : static const u16 MeshGrid_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
24867 : static const u16 MeshGrid_Out2All[] = { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21, 22};
24868 : static const u16 MeshGrid_Dyn2All[] = { 6, 7, 9, 10, 12, 14};
24869 :
24870 : static u32 MeshGrid_get_field_count(GF_Node *node, u8 IndexMode)
24871 : {
24872 0 : switch(IndexMode) {
24873 : case GF_SG_FIELD_CODING_IN:
24874 0 : return 16;
24875 : case GF_SG_FIELD_CODING_DEF:
24876 0 : return 17;
24877 : case GF_SG_FIELD_CODING_OUT:
24878 0 : return 14;
24879 : case GF_SG_FIELD_CODING_DYN:
24880 0 : return 6;
24881 : default:
24882 0 : return 23;
24883 : }
24884 0 : }
24885 :
24886 : static GF_Err MeshGrid_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
24887 : {
24888 0 : switch(IndexMode) {
24889 : case GF_SG_FIELD_CODING_IN:
24890 0 : *allField = MeshGrid_In2All[inField];
24891 0 : return GF_OK;
24892 : case GF_SG_FIELD_CODING_DEF:
24893 0 : *allField = MeshGrid_Def2All[inField];
24894 0 : return GF_OK;
24895 : case GF_SG_FIELD_CODING_OUT:
24896 0 : *allField = MeshGrid_Out2All[inField];
24897 0 : return GF_OK;
24898 : case GF_SG_FIELD_CODING_DYN:
24899 0 : *allField = MeshGrid_Dyn2All[inField];
24900 0 : return GF_OK;
24901 : default:
24902 0 : return GF_BAD_PARAM;
24903 : }
24904 0 : }
24905 : static GF_Err MeshGrid_get_field(GF_Node *node, GF_FieldInfo *info)
24906 : {
24907 0 : switch (info->fieldIndex) {
24908 : case 0:
24909 0 : info->name = "set_colorIndex";
24910 0 : info->eventType = GF_SG_EVENT_IN;
24911 0 : info->on_event_in = ((M_MeshGrid *)node)->on_set_colorIndex;
24912 0 : info->fieldType = GF_SG_VRML_MFINT32;
24913 0 : info->far_ptr = & ((M_MeshGrid *) node)->set_colorIndex;
24914 0 : return GF_OK;
24915 : case 1:
24916 0 : info->name = "set_coordIndex";
24917 0 : info->eventType = GF_SG_EVENT_IN;
24918 0 : info->on_event_in = ((M_MeshGrid *)node)->on_set_coordIndex;
24919 0 : info->fieldType = GF_SG_VRML_MFINT32;
24920 0 : info->far_ptr = & ((M_MeshGrid *) node)->set_coordIndex;
24921 0 : return GF_OK;
24922 : case 2:
24923 0 : info->name = "set_normalIndex";
24924 0 : info->eventType = GF_SG_EVENT_IN;
24925 0 : info->on_event_in = ((M_MeshGrid *)node)->on_set_normalIndex;
24926 0 : info->fieldType = GF_SG_VRML_MFINT32;
24927 0 : info->far_ptr = & ((M_MeshGrid *) node)->set_normalIndex;
24928 0 : return GF_OK;
24929 : case 3:
24930 0 : info->name = "set_texCoordIndex";
24931 0 : info->eventType = GF_SG_EVENT_IN;
24932 0 : info->on_event_in = ((M_MeshGrid *)node)->on_set_texCoordIndex;
24933 0 : info->fieldType = GF_SG_VRML_MFINT32;
24934 0 : info->far_ptr = & ((M_MeshGrid *) node)->set_texCoordIndex;
24935 0 : return GF_OK;
24936 : case 4:
24937 0 : info->name = "color";
24938 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24939 0 : info->fieldType = GF_SG_VRML_SFNODE;
24940 0 : info->NDTtype = NDT_SFColorNode;
24941 0 : info->far_ptr = & ((M_MeshGrid *)node)->color;
24942 0 : return GF_OK;
24943 : case 5:
24944 0 : info->name = "coord";
24945 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24946 0 : info->fieldType = GF_SG_VRML_SFNODE;
24947 0 : info->NDTtype = NDT_SFCoordinateNode;
24948 0 : info->far_ptr = & ((M_MeshGrid *)node)->coord;
24949 0 : return GF_OK;
24950 : case 6:
24951 0 : info->name = "displayLevel";
24952 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24953 0 : info->fieldType = GF_SG_VRML_SFINT32;
24954 0 : info->far_ptr = & ((M_MeshGrid *) node)->displayLevel;
24955 0 : return GF_OK;
24956 : case 7:
24957 0 : info->name = "filterType";
24958 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24959 0 : info->fieldType = GF_SG_VRML_SFINT32;
24960 0 : info->far_ptr = & ((M_MeshGrid *) node)->filterType;
24961 0 : return GF_OK;
24962 : case 8:
24963 0 : info->name = "gridCoord";
24964 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24965 0 : info->fieldType = GF_SG_VRML_SFNODE;
24966 0 : info->NDTtype = NDT_SFCoordinateNode;
24967 0 : info->far_ptr = & ((M_MeshGrid *)node)->gridCoord;
24968 0 : return GF_OK;
24969 : case 9:
24970 0 : info->name = "hierarchicalLevel";
24971 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24972 0 : info->fieldType = GF_SG_VRML_SFINT32;
24973 0 : info->far_ptr = & ((M_MeshGrid *) node)->hierarchicalLevel;
24974 0 : return GF_OK;
24975 : case 10:
24976 0 : info->name = "nLevels";
24977 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24978 0 : info->fieldType = GF_SG_VRML_MFINT32;
24979 0 : info->far_ptr = & ((M_MeshGrid *) node)->nLevels;
24980 0 : return GF_OK;
24981 : case 11:
24982 0 : info->name = "normal";
24983 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24984 0 : info->fieldType = GF_SG_VRML_SFNODE;
24985 0 : info->NDTtype = NDT_SFNormalNode;
24986 0 : info->far_ptr = & ((M_MeshGrid *)node)->normal;
24987 0 : return GF_OK;
24988 : case 12:
24989 0 : info->name = "nSlices";
24990 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24991 0 : info->fieldType = GF_SG_VRML_MFINT32;
24992 0 : info->far_ptr = & ((M_MeshGrid *) node)->nSlices;
24993 0 : return GF_OK;
24994 : case 13:
24995 0 : info->name = "texCoord";
24996 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24997 0 : info->fieldType = GF_SG_VRML_SFNODE;
24998 0 : info->NDTtype = NDT_SFTextureCoordinateNode;
24999 0 : info->far_ptr = & ((M_MeshGrid *)node)->texCoord;
25000 0 : return GF_OK;
25001 : case 14:
25002 0 : info->name = "vertexOffset";
25003 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25004 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
25005 0 : info->far_ptr = & ((M_MeshGrid *) node)->vertexOffset;
25006 0 : return GF_OK;
25007 : case 15:
25008 0 : info->name = "vertexLink";
25009 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25010 0 : info->fieldType = GF_SG_VRML_MFINT32;
25011 0 : info->far_ptr = & ((M_MeshGrid *) node)->vertexLink;
25012 0 : return GF_OK;
25013 : case 16:
25014 0 : info->name = "colorIndex";
25015 0 : info->eventType = GF_SG_EVENT_FIELD;
25016 0 : info->fieldType = GF_SG_VRML_MFINT32;
25017 0 : info->far_ptr = & ((M_MeshGrid *) node)->colorIndex;
25018 0 : return GF_OK;
25019 : case 17:
25020 0 : info->name = "coordIndex";
25021 0 : info->eventType = GF_SG_EVENT_FIELD;
25022 0 : info->fieldType = GF_SG_VRML_MFINT32;
25023 0 : info->far_ptr = & ((M_MeshGrid *) node)->coordIndex;
25024 0 : return GF_OK;
25025 : case 18:
25026 0 : info->name = "normalIndex";
25027 0 : info->eventType = GF_SG_EVENT_FIELD;
25028 0 : info->fieldType = GF_SG_VRML_MFINT32;
25029 0 : info->far_ptr = & ((M_MeshGrid *) node)->normalIndex;
25030 0 : return GF_OK;
25031 : case 19:
25032 0 : info->name = "solid";
25033 0 : info->eventType = GF_SG_EVENT_FIELD;
25034 0 : info->fieldType = GF_SG_VRML_SFBOOL;
25035 0 : info->far_ptr = & ((M_MeshGrid *) node)->solid;
25036 0 : return GF_OK;
25037 : case 20:
25038 0 : info->name = "texCoordIndex";
25039 0 : info->eventType = GF_SG_EVENT_FIELD;
25040 0 : info->fieldType = GF_SG_VRML_MFINT32;
25041 0 : info->far_ptr = & ((M_MeshGrid *) node)->texCoordIndex;
25042 0 : return GF_OK;
25043 : case 21:
25044 0 : info->name = "isLoading";
25045 0 : info->eventType = GF_SG_EVENT_OUT;
25046 0 : info->fieldType = GF_SG_VRML_SFBOOL;
25047 0 : info->far_ptr = & ((M_MeshGrid *) node)->isLoading;
25048 0 : return GF_OK;
25049 : case 22:
25050 0 : info->name = "nVertices";
25051 0 : info->eventType = GF_SG_EVENT_OUT;
25052 0 : info->fieldType = GF_SG_VRML_MFINT32;
25053 0 : info->far_ptr = & ((M_MeshGrid *) node)->nVertices;
25054 0 : return GF_OK;
25055 : default:
25056 0 : return GF_BAD_PARAM;
25057 : }
25058 0 : }
25059 :
25060 :
25061 : static s32 MeshGrid_get_field_index_by_name(char *name)
25062 : {
25063 0 : if (!strcmp("set_colorIndex", name)) return 0;
25064 0 : if (!strcmp("set_coordIndex", name)) return 1;
25065 0 : if (!strcmp("set_normalIndex", name)) return 2;
25066 0 : if (!strcmp("set_texCoordIndex", name)) return 3;
25067 0 : if (!strcmp("color", name)) return 4;
25068 0 : if (!strcmp("coord", name)) return 5;
25069 0 : if (!strcmp("displayLevel", name)) return 6;
25070 0 : if (!strcmp("filterType", name)) return 7;
25071 0 : if (!strcmp("gridCoord", name)) return 8;
25072 0 : if (!strcmp("hierarchicalLevel", name)) return 9;
25073 0 : if (!strcmp("nLevels", name)) return 10;
25074 0 : if (!strcmp("normal", name)) return 11;
25075 0 : if (!strcmp("nSlices", name)) return 12;
25076 0 : if (!strcmp("texCoord", name)) return 13;
25077 0 : if (!strcmp("vertexOffset", name)) return 14;
25078 0 : if (!strcmp("vertexLink", name)) return 15;
25079 0 : if (!strcmp("colorIndex", name)) return 16;
25080 0 : if (!strcmp("coordIndex", name)) return 17;
25081 0 : if (!strcmp("normalIndex", name)) return 18;
25082 0 : if (!strcmp("solid", name)) return 19;
25083 0 : if (!strcmp("texCoordIndex", name)) return 20;
25084 0 : if (!strcmp("isLoading", name)) return 21;
25085 0 : if (!strcmp("nVertices", name)) return 22;
25086 0 : return -1;
25087 0 : }
25088 : static Bool MeshGrid_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
25089 : {
25090 0 : switch (FieldIndex) {
25091 : case 6:
25092 0 : *AType = 13;
25093 0 : *QType = 13;
25094 0 : *QT13_bits = 32;
25095 0 : *b_min = FLT2FIX(0);
25096 0 : *b_max = FIX_MAX;
25097 0 : return 1;
25098 : case 7:
25099 0 : *AType = 13;
25100 0 : *QType = 13;
25101 0 : *QT13_bits = 2;
25102 0 : *b_min = FLT2FIX(0);
25103 0 : *b_max = FLT2FIX( 1);
25104 0 : return 1;
25105 : case 9:
25106 0 : *AType = 13;
25107 0 : *QType = 13;
25108 0 : *QT13_bits = 32;
25109 0 : *b_min = FLT2FIX(-1);
25110 0 : *b_max = FIX_MAX;
25111 0 : return 1;
25112 : case 10:
25113 0 : *AType = 7;
25114 0 : *QType = 7;
25115 0 : return 1;
25116 : case 12:
25117 0 : *AType = 7;
25118 0 : *QType = 7;
25119 0 : return 1;
25120 : case 14:
25121 0 : *AType = 7;
25122 0 : *QType = 7;
25123 0 : *b_min = FLT2FIX(0.0);
25124 0 : *b_max = FLT2FIX( 2.0);
25125 0 : return 1;
25126 : case 15:
25127 0 : *AType = 0;
25128 0 : *QType = 13;
25129 0 : *QT13_bits = 2;
25130 0 : *b_min = FLT2FIX(0);
25131 0 : *b_max = FLT2FIX( 3);
25132 0 : return 1;
25133 : case 16:
25134 0 : *AType = 0;
25135 0 : *QType = 14;
25136 0 : *b_min = FLT2FIX(-1);
25137 0 : *b_max = FIX_MAX;
25138 0 : return 1;
25139 : case 17:
25140 0 : *AType = 0;
25141 0 : *QType = 14;
25142 0 : *b_min = FLT2FIX(-1);
25143 0 : *b_max = FIX_MAX;
25144 0 : return 1;
25145 : case 18:
25146 0 : *AType = 0;
25147 0 : *QType = 14;
25148 0 : *b_min = FLT2FIX(-1);
25149 0 : *b_max = FIX_MAX;
25150 0 : return 1;
25151 : case 20:
25152 0 : *AType = 0;
25153 0 : *QType = 14;
25154 0 : *b_min = FLT2FIX(-1);
25155 0 : *b_max = FIX_MAX;
25156 0 : return 1;
25157 : default:
25158 0 : return 0;
25159 : }
25160 0 : }
25161 :
25162 :
25163 :
25164 : GF_Node *MeshGrid_Create()
25165 : {
25166 : M_MeshGrid *p;
25167 0 : GF_SAFEALLOC(p, M_MeshGrid);
25168 0 : if(!p) return NULL;
25169 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MeshGrid);
25170 :
25171 : /*default field values*/
25172 0 : p->displayLevel = 0;
25173 0 : p->filterType = 0;
25174 0 : p->hierarchicalLevel = 0;
25175 0 : p->solid = 1;
25176 0 : return (GF_Node *)p;
25177 0 : }
25178 :
25179 :
25180 : /*
25181 : NonLinearDeformer Node deletion
25182 : */
25183 :
25184 : static void NonLinearDeformer_Del(GF_Node *node)
25185 : {
25186 46 : M_NonLinearDeformer *p = (M_NonLinearDeformer *) node;
25187 23 : gf_sg_mffloat_del(p->extend);
25188 23 : gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
25189 23 : gf_node_free((GF_Node *) p);
25190 23 : }
25191 :
25192 : static const u16 NonLinearDeformer_Def2All[] = { 0, 1, 2, 3, 4};
25193 : static const u16 NonLinearDeformer_In2All[] = { 0, 1, 2, 3, 4};
25194 : static const u16 NonLinearDeformer_Out2All[] = { 0, 1, 2, 3, 4};
25195 :
25196 : static u32 NonLinearDeformer_get_field_count(GF_Node *node, u8 IndexMode)
25197 : {
25198 56 : switch(IndexMode) {
25199 : case GF_SG_FIELD_CODING_IN:
25200 9 : return 5;
25201 : case GF_SG_FIELD_CODING_DEF:
25202 9 : return 5;
25203 : case GF_SG_FIELD_CODING_OUT:
25204 0 : return 5;
25205 : case GF_SG_FIELD_CODING_DYN:
25206 0 : return 0;
25207 : default:
25208 10 : return 5;
25209 : }
25210 28 : }
25211 :
25212 : static GF_Err NonLinearDeformer_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
25213 : {
25214 86 : switch(IndexMode) {
25215 : case GF_SG_FIELD_CODING_IN:
25216 13 : *allField = NonLinearDeformer_In2All[inField];
25217 13 : return GF_OK;
25218 : case GF_SG_FIELD_CODING_DEF:
25219 30 : *allField = NonLinearDeformer_Def2All[inField];
25220 30 : return GF_OK;
25221 : case GF_SG_FIELD_CODING_OUT:
25222 0 : *allField = NonLinearDeformer_Out2All[inField];
25223 0 : return GF_OK;
25224 : default:
25225 0 : return GF_BAD_PARAM;
25226 : }
25227 43 : }
25228 : static GF_Err NonLinearDeformer_get_field(GF_Node *node, GF_FieldInfo *info)
25229 : {
25230 356 : switch (info->fieldIndex) {
25231 : case 0:
25232 39 : info->name = "axis";
25233 39 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25234 39 : info->fieldType = GF_SG_VRML_SFVEC3F;
25235 39 : info->far_ptr = & ((M_NonLinearDeformer *) node)->axis;
25236 39 : return GF_OK;
25237 : case 1:
25238 39 : info->name = "extend";
25239 39 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25240 39 : info->fieldType = GF_SG_VRML_MFFLOAT;
25241 39 : info->far_ptr = & ((M_NonLinearDeformer *) node)->extend;
25242 39 : return GF_OK;
25243 : case 2:
25244 27 : info->name = "geometry";
25245 27 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25246 27 : info->fieldType = GF_SG_VRML_SFNODE;
25247 27 : info->NDTtype = NDT_SFGeometryNode;
25248 27 : info->far_ptr = & ((M_NonLinearDeformer *)node)->geometry;
25249 27 : return GF_OK;
25250 : case 3:
25251 47 : info->name = "param";
25252 47 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25253 47 : info->fieldType = GF_SG_VRML_SFFLOAT;
25254 47 : info->far_ptr = & ((M_NonLinearDeformer *) node)->param;
25255 47 : return GF_OK;
25256 : case 4:
25257 26 : info->name = "type";
25258 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25259 26 : info->fieldType = GF_SG_VRML_SFINT32;
25260 26 : info->far_ptr = & ((M_NonLinearDeformer *) node)->type;
25261 26 : return GF_OK;
25262 : default:
25263 0 : return GF_BAD_PARAM;
25264 : }
25265 178 : }
25266 :
25267 :
25268 : static s32 NonLinearDeformer_get_field_index_by_name(char *name)
25269 : {
25270 48 : if (!strcmp("axis", name)) return 0;
25271 22 : if (!strcmp("extend", name)) return 1;
25272 18 : if (!strcmp("geometry", name)) return 2;
25273 18 : if (!strcmp("param", name)) return 3;
25274 4 : if (!strcmp("type", name)) return 4;
25275 0 : return -1;
25276 22 : }
25277 : static Bool NonLinearDeformer_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
25278 : {
25279 : switch (FieldIndex) {
25280 : default:
25281 0 : return 0;
25282 : }
25283 : }
25284 :
25285 :
25286 :
25287 : GF_Node *NonLinearDeformer_Create()
25288 : {
25289 : M_NonLinearDeformer *p;
25290 69 : GF_SAFEALLOC(p, M_NonLinearDeformer);
25291 23 : if(!p) return NULL;
25292 23 : gf_node_setup((GF_Node *)p, TAG_MPEG4_NonLinearDeformer);
25293 :
25294 : /*default field values*/
25295 23 : p->axis.x = FLT2FIX(0);
25296 23 : p->axis.y = FLT2FIX(0);
25297 23 : p->axis.z = FLT2FIX(1);
25298 23 : p->param = FLT2FIX(0);
25299 23 : p->type = 0;
25300 23 : return (GF_Node *)p;
25301 23 : }
25302 :
25303 :
25304 : /*
25305 : NurbsCurve Node deletion
25306 : */
25307 :
25308 : static void NurbsCurve_Del(GF_Node *node)
25309 : {
25310 0 : M_NurbsCurve *p = (M_NurbsCurve *) node;
25311 0 : gf_sg_mfint32_del(p->set_colorIndex);
25312 0 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
25313 0 : gf_sg_mfvec4f_del(p->controlPoint);
25314 0 : gf_sg_mfint32_del(p->colorIndex);
25315 0 : gf_sg_mffloat_del(p->knot);
25316 0 : gf_node_free((GF_Node *) p);
25317 0 : }
25318 :
25319 : static const u16 NurbsCurve_Def2All[] = { 1, 2, 3, 4, 5, 6, 7};
25320 : static const u16 NurbsCurve_In2All[] = { 0, 1, 2, 3};
25321 : static const u16 NurbsCurve_Out2All[] = { 1, 2, 3};
25322 : static const u16 NurbsCurve_Dyn2All[] = { 2};
25323 :
25324 : static u32 NurbsCurve_get_field_count(GF_Node *node, u8 IndexMode)
25325 : {
25326 0 : switch(IndexMode) {
25327 : case GF_SG_FIELD_CODING_IN:
25328 0 : return 4;
25329 : case GF_SG_FIELD_CODING_DEF:
25330 0 : return 7;
25331 : case GF_SG_FIELD_CODING_OUT:
25332 0 : return 3;
25333 : case GF_SG_FIELD_CODING_DYN:
25334 0 : return 1;
25335 : default:
25336 0 : return 8;
25337 : }
25338 0 : }
25339 :
25340 : static GF_Err NurbsCurve_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
25341 : {
25342 0 : switch(IndexMode) {
25343 : case GF_SG_FIELD_CODING_IN:
25344 0 : *allField = NurbsCurve_In2All[inField];
25345 0 : return GF_OK;
25346 : case GF_SG_FIELD_CODING_DEF:
25347 0 : *allField = NurbsCurve_Def2All[inField];
25348 0 : return GF_OK;
25349 : case GF_SG_FIELD_CODING_OUT:
25350 0 : *allField = NurbsCurve_Out2All[inField];
25351 0 : return GF_OK;
25352 : case GF_SG_FIELD_CODING_DYN:
25353 0 : *allField = NurbsCurve_Dyn2All[inField];
25354 0 : return GF_OK;
25355 : default:
25356 0 : return GF_BAD_PARAM;
25357 : }
25358 0 : }
25359 : static GF_Err NurbsCurve_get_field(GF_Node *node, GF_FieldInfo *info)
25360 : {
25361 0 : switch (info->fieldIndex) {
25362 : case 0:
25363 0 : info->name = "set_colorIndex";
25364 0 : info->eventType = GF_SG_EVENT_IN;
25365 0 : info->on_event_in = ((M_NurbsCurve *)node)->on_set_colorIndex;
25366 0 : info->fieldType = GF_SG_VRML_MFINT32;
25367 0 : info->far_ptr = & ((M_NurbsCurve *) node)->set_colorIndex;
25368 0 : return GF_OK;
25369 : case 1:
25370 0 : info->name = "color";
25371 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25372 0 : info->fieldType = GF_SG_VRML_SFNODE;
25373 0 : info->NDTtype = NDT_SFColorNode;
25374 0 : info->far_ptr = & ((M_NurbsCurve *)node)->color;
25375 0 : return GF_OK;
25376 : case 2:
25377 0 : info->name = "controlPoint";
25378 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25379 0 : info->fieldType = GF_SG_VRML_MFVEC4F;
25380 0 : info->far_ptr = & ((M_NurbsCurve *) node)->controlPoint;
25381 0 : return GF_OK;
25382 : case 3:
25383 0 : info->name = "tessellation";
25384 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25385 0 : info->fieldType = GF_SG_VRML_SFINT32;
25386 0 : info->far_ptr = & ((M_NurbsCurve *) node)->tessellation;
25387 0 : return GF_OK;
25388 : case 4:
25389 0 : info->name = "colorIndex";
25390 0 : info->eventType = GF_SG_EVENT_FIELD;
25391 0 : info->fieldType = GF_SG_VRML_MFINT32;
25392 0 : info->far_ptr = & ((M_NurbsCurve *) node)->colorIndex;
25393 0 : return GF_OK;
25394 : case 5:
25395 0 : info->name = "colorPerVertex";
25396 0 : info->eventType = GF_SG_EVENT_FIELD;
25397 0 : info->fieldType = GF_SG_VRML_SFBOOL;
25398 0 : info->far_ptr = & ((M_NurbsCurve *) node)->colorPerVertex;
25399 0 : return GF_OK;
25400 : case 6:
25401 0 : info->name = "knot";
25402 0 : info->eventType = GF_SG_EVENT_FIELD;
25403 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
25404 0 : info->far_ptr = & ((M_NurbsCurve *) node)->knot;
25405 0 : return GF_OK;
25406 : case 7:
25407 0 : info->name = "order";
25408 0 : info->eventType = GF_SG_EVENT_FIELD;
25409 0 : info->fieldType = GF_SG_VRML_SFINT32;
25410 0 : info->far_ptr = & ((M_NurbsCurve *) node)->order;
25411 0 : return GF_OK;
25412 : default:
25413 0 : return GF_BAD_PARAM;
25414 : }
25415 0 : }
25416 :
25417 :
25418 : static s32 NurbsCurve_get_field_index_by_name(char *name)
25419 : {
25420 0 : if (!strcmp("set_colorIndex", name)) return 0;
25421 0 : if (!strcmp("color", name)) return 1;
25422 0 : if (!strcmp("controlPoint", name)) return 2;
25423 0 : if (!strcmp("tessellation", name)) return 3;
25424 0 : if (!strcmp("colorIndex", name)) return 4;
25425 0 : if (!strcmp("colorPerVertex", name)) return 5;
25426 0 : if (!strcmp("knot", name)) return 6;
25427 0 : if (!strcmp("order", name)) return 7;
25428 0 : return -1;
25429 0 : }
25430 : static Bool NurbsCurve_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
25431 : {
25432 0 : switch (FieldIndex) {
25433 : case 2:
25434 0 : *AType = 15;
25435 0 : *QType = 15;
25436 0 : *b_min = FIX_MIN;
25437 0 : *b_max = FIX_MAX;
25438 0 : return 1;
25439 : case 4:
25440 0 : *AType = 0;
25441 0 : *QType = 14;
25442 0 : return 1;
25443 : case 7:
25444 0 : *AType = 0;
25445 0 : *QType = 13;
25446 0 : *QT13_bits = 5;
25447 0 : *b_min = FLT2FIX(3);
25448 0 : *b_max = FLT2FIX(34);
25449 0 : return 1;
25450 : default:
25451 0 : return 0;
25452 : }
25453 0 : }
25454 :
25455 :
25456 :
25457 : GF_Node *NurbsCurve_Create()
25458 : {
25459 : M_NurbsCurve *p;
25460 0 : GF_SAFEALLOC(p, M_NurbsCurve);
25461 0 : if(!p) return NULL;
25462 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_NurbsCurve);
25463 :
25464 : /*default field values*/
25465 0 : p->tessellation = 0;
25466 0 : p->colorPerVertex = 1;
25467 0 : p->order = 4;
25468 0 : return (GF_Node *)p;
25469 0 : }
25470 :
25471 :
25472 : /*
25473 : NurbsCurve2D Node deletion
25474 : */
25475 :
25476 : static void NurbsCurve2D_Del(GF_Node *node)
25477 : {
25478 0 : M_NurbsCurve2D *p = (M_NurbsCurve2D *) node;
25479 0 : gf_sg_mfint32_del(p->set_colorIndex);
25480 0 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
25481 0 : gf_sg_mfvec3f_del(p->controlPoint);
25482 0 : gf_sg_mfint32_del(p->colorIndex);
25483 0 : gf_sg_mffloat_del(p->knot);
25484 0 : gf_node_free((GF_Node *) p);
25485 0 : }
25486 :
25487 : static const u16 NurbsCurve2D_Def2All[] = { 1, 2, 3, 4, 5, 6, 7};
25488 : static const u16 NurbsCurve2D_In2All[] = { 0, 1, 2, 3};
25489 : static const u16 NurbsCurve2D_Out2All[] = { 1, 2, 3};
25490 : static const u16 NurbsCurve2D_Dyn2All[] = { 2};
25491 :
25492 : static u32 NurbsCurve2D_get_field_count(GF_Node *node, u8 IndexMode)
25493 : {
25494 0 : switch(IndexMode) {
25495 : case GF_SG_FIELD_CODING_IN:
25496 0 : return 4;
25497 : case GF_SG_FIELD_CODING_DEF:
25498 0 : return 7;
25499 : case GF_SG_FIELD_CODING_OUT:
25500 0 : return 3;
25501 : case GF_SG_FIELD_CODING_DYN:
25502 0 : return 1;
25503 : default:
25504 0 : return 8;
25505 : }
25506 0 : }
25507 :
25508 : static GF_Err NurbsCurve2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
25509 : {
25510 0 : switch(IndexMode) {
25511 : case GF_SG_FIELD_CODING_IN:
25512 0 : *allField = NurbsCurve2D_In2All[inField];
25513 0 : return GF_OK;
25514 : case GF_SG_FIELD_CODING_DEF:
25515 0 : *allField = NurbsCurve2D_Def2All[inField];
25516 0 : return GF_OK;
25517 : case GF_SG_FIELD_CODING_OUT:
25518 0 : *allField = NurbsCurve2D_Out2All[inField];
25519 0 : return GF_OK;
25520 : case GF_SG_FIELD_CODING_DYN:
25521 0 : *allField = NurbsCurve2D_Dyn2All[inField];
25522 0 : return GF_OK;
25523 : default:
25524 0 : return GF_BAD_PARAM;
25525 : }
25526 0 : }
25527 : static GF_Err NurbsCurve2D_get_field(GF_Node *node, GF_FieldInfo *info)
25528 : {
25529 0 : switch (info->fieldIndex) {
25530 : case 0:
25531 0 : info->name = "set_colorIndex";
25532 0 : info->eventType = GF_SG_EVENT_IN;
25533 0 : info->on_event_in = ((M_NurbsCurve2D *)node)->on_set_colorIndex;
25534 0 : info->fieldType = GF_SG_VRML_MFINT32;
25535 0 : info->far_ptr = & ((M_NurbsCurve2D *) node)->set_colorIndex;
25536 0 : return GF_OK;
25537 : case 1:
25538 0 : info->name = "color";
25539 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25540 0 : info->fieldType = GF_SG_VRML_SFNODE;
25541 0 : info->NDTtype = NDT_SFColorNode;
25542 0 : info->far_ptr = & ((M_NurbsCurve2D *)node)->color;
25543 0 : return GF_OK;
25544 : case 2:
25545 0 : info->name = "controlPoint";
25546 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25547 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
25548 0 : info->far_ptr = & ((M_NurbsCurve2D *) node)->controlPoint;
25549 0 : return GF_OK;
25550 : case 3:
25551 0 : info->name = "tessellation";
25552 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25553 0 : info->fieldType = GF_SG_VRML_SFINT32;
25554 0 : info->far_ptr = & ((M_NurbsCurve2D *) node)->tessellation;
25555 0 : return GF_OK;
25556 : case 4:
25557 0 : info->name = "colorIndex";
25558 0 : info->eventType = GF_SG_EVENT_FIELD;
25559 0 : info->fieldType = GF_SG_VRML_MFINT32;
25560 0 : info->far_ptr = & ((M_NurbsCurve2D *) node)->colorIndex;
25561 0 : return GF_OK;
25562 : case 5:
25563 0 : info->name = "colorPerVertex";
25564 0 : info->eventType = GF_SG_EVENT_FIELD;
25565 0 : info->fieldType = GF_SG_VRML_SFBOOL;
25566 0 : info->far_ptr = & ((M_NurbsCurve2D *) node)->colorPerVertex;
25567 0 : return GF_OK;
25568 : case 6:
25569 0 : info->name = "knot";
25570 0 : info->eventType = GF_SG_EVENT_FIELD;
25571 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
25572 0 : info->far_ptr = & ((M_NurbsCurve2D *) node)->knot;
25573 0 : return GF_OK;
25574 : case 7:
25575 0 : info->name = "order";
25576 0 : info->eventType = GF_SG_EVENT_FIELD;
25577 0 : info->fieldType = GF_SG_VRML_SFINT32;
25578 0 : info->far_ptr = & ((M_NurbsCurve2D *) node)->order;
25579 0 : return GF_OK;
25580 : default:
25581 0 : return GF_BAD_PARAM;
25582 : }
25583 0 : }
25584 :
25585 :
25586 : static s32 NurbsCurve2D_get_field_index_by_name(char *name)
25587 : {
25588 0 : if (!strcmp("set_colorIndex", name)) return 0;
25589 0 : if (!strcmp("color", name)) return 1;
25590 0 : if (!strcmp("controlPoint", name)) return 2;
25591 0 : if (!strcmp("tessellation", name)) return 3;
25592 0 : if (!strcmp("colorIndex", name)) return 4;
25593 0 : if (!strcmp("colorPerVertex", name)) return 5;
25594 0 : if (!strcmp("knot", name)) return 6;
25595 0 : if (!strcmp("order", name)) return 7;
25596 0 : return -1;
25597 0 : }
25598 : static Bool NurbsCurve2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
25599 : {
25600 0 : switch (FieldIndex) {
25601 : case 2:
25602 0 : *AType = 2;
25603 0 : *QType = 2;
25604 0 : *b_min = FIX_MIN;
25605 0 : *b_max = FIX_MAX;
25606 0 : return 1;
25607 : case 4:
25608 0 : *AType = 0;
25609 0 : *QType = 14;
25610 0 : return 1;
25611 : case 7:
25612 0 : *AType = 0;
25613 0 : *QType = 13;
25614 0 : *QT13_bits = 5;
25615 0 : *b_min = FLT2FIX(3);
25616 0 : *b_max = FLT2FIX(34);
25617 0 : return 1;
25618 : default:
25619 0 : return 0;
25620 : }
25621 0 : }
25622 :
25623 :
25624 :
25625 : GF_Node *NurbsCurve2D_Create()
25626 : {
25627 : M_NurbsCurve2D *p;
25628 0 : GF_SAFEALLOC(p, M_NurbsCurve2D);
25629 0 : if(!p) return NULL;
25630 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_NurbsCurve2D);
25631 :
25632 : /*default field values*/
25633 0 : p->tessellation = 0;
25634 0 : p->colorPerVertex = 1;
25635 0 : p->order = 4;
25636 0 : return (GF_Node *)p;
25637 0 : }
25638 :
25639 :
25640 : /*
25641 : NurbsSurface Node deletion
25642 : */
25643 :
25644 : static void NurbsSurface_Del(GF_Node *node)
25645 : {
25646 0 : M_NurbsSurface *p = (M_NurbsSurface *) node;
25647 0 : gf_sg_mfint32_del(p->set_colorIndex);
25648 0 : gf_sg_mfint32_del(p->set_texColorIndex);
25649 0 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
25650 0 : gf_sg_mfvec4f_del(p->controlPoint);
25651 0 : gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
25652 0 : gf_sg_mfint32_del(p->colorIndex);
25653 0 : gf_sg_mfint32_del(p->texColorIndex);
25654 0 : gf_sg_mffloat_del(p->uKnot);
25655 0 : gf_sg_mffloat_del(p->vKnot);
25656 0 : gf_node_free((GF_Node *) p);
25657 0 : }
25658 :
25659 : static const u16 NurbsSurface_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
25660 : static const u16 NurbsSurface_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
25661 : static const u16 NurbsSurface_Out2All[] = { 2, 3, 4, 5, 6};
25662 : static const u16 NurbsSurface_Dyn2All[] = { 3};
25663 :
25664 : static u32 NurbsSurface_get_field_count(GF_Node *node, u8 IndexMode)
25665 : {
25666 0 : switch(IndexMode) {
25667 : case GF_SG_FIELD_CODING_IN:
25668 0 : return 7;
25669 : case GF_SG_FIELD_CODING_DEF:
25670 0 : return 16;
25671 : case GF_SG_FIELD_CODING_OUT:
25672 0 : return 5;
25673 : case GF_SG_FIELD_CODING_DYN:
25674 0 : return 1;
25675 : default:
25676 0 : return 18;
25677 : }
25678 0 : }
25679 :
25680 : static GF_Err NurbsSurface_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
25681 : {
25682 0 : switch(IndexMode) {
25683 : case GF_SG_FIELD_CODING_IN:
25684 0 : *allField = NurbsSurface_In2All[inField];
25685 0 : return GF_OK;
25686 : case GF_SG_FIELD_CODING_DEF:
25687 0 : *allField = NurbsSurface_Def2All[inField];
25688 0 : return GF_OK;
25689 : case GF_SG_FIELD_CODING_OUT:
25690 0 : *allField = NurbsSurface_Out2All[inField];
25691 0 : return GF_OK;
25692 : case GF_SG_FIELD_CODING_DYN:
25693 0 : *allField = NurbsSurface_Dyn2All[inField];
25694 0 : return GF_OK;
25695 : default:
25696 0 : return GF_BAD_PARAM;
25697 : }
25698 0 : }
25699 : static GF_Err NurbsSurface_get_field(GF_Node *node, GF_FieldInfo *info)
25700 : {
25701 0 : switch (info->fieldIndex) {
25702 : case 0:
25703 0 : info->name = "set_colorIndex";
25704 0 : info->eventType = GF_SG_EVENT_IN;
25705 0 : info->on_event_in = ((M_NurbsSurface *)node)->on_set_colorIndex;
25706 0 : info->fieldType = GF_SG_VRML_MFINT32;
25707 0 : info->far_ptr = & ((M_NurbsSurface *) node)->set_colorIndex;
25708 0 : return GF_OK;
25709 : case 1:
25710 0 : info->name = "set_texColorIndex";
25711 0 : info->eventType = GF_SG_EVENT_IN;
25712 0 : info->on_event_in = ((M_NurbsSurface *)node)->on_set_texColorIndex;
25713 0 : info->fieldType = GF_SG_VRML_MFINT32;
25714 0 : info->far_ptr = & ((M_NurbsSurface *) node)->set_texColorIndex;
25715 0 : return GF_OK;
25716 : case 2:
25717 0 : info->name = "color";
25718 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25719 0 : info->fieldType = GF_SG_VRML_SFNODE;
25720 0 : info->NDTtype = NDT_SFColorNode;
25721 0 : info->far_ptr = & ((M_NurbsSurface *)node)->color;
25722 0 : return GF_OK;
25723 : case 3:
25724 0 : info->name = "controlPoint";
25725 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25726 0 : info->fieldType = GF_SG_VRML_MFVEC4F;
25727 0 : info->far_ptr = & ((M_NurbsSurface *) node)->controlPoint;
25728 0 : return GF_OK;
25729 : case 4:
25730 0 : info->name = "texCoord";
25731 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25732 0 : info->fieldType = GF_SG_VRML_SFNODE;
25733 0 : info->NDTtype = NDT_SFTextureCoordinateNode;
25734 0 : info->far_ptr = & ((M_NurbsSurface *)node)->texCoord;
25735 0 : return GF_OK;
25736 : case 5:
25737 0 : info->name = "uTessellation";
25738 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25739 0 : info->fieldType = GF_SG_VRML_SFINT32;
25740 0 : info->far_ptr = & ((M_NurbsSurface *) node)->uTessellation;
25741 0 : return GF_OK;
25742 : case 6:
25743 0 : info->name = "vTessellation";
25744 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25745 0 : info->fieldType = GF_SG_VRML_SFINT32;
25746 0 : info->far_ptr = & ((M_NurbsSurface *) node)->vTessellation;
25747 0 : return GF_OK;
25748 : case 7:
25749 0 : info->name = "ccw";
25750 0 : info->eventType = GF_SG_EVENT_FIELD;
25751 0 : info->fieldType = GF_SG_VRML_SFBOOL;
25752 0 : info->far_ptr = & ((M_NurbsSurface *) node)->ccw;
25753 0 : return GF_OK;
25754 : case 8:
25755 0 : info->name = "colorIndex";
25756 0 : info->eventType = GF_SG_EVENT_FIELD;
25757 0 : info->fieldType = GF_SG_VRML_MFINT32;
25758 0 : info->far_ptr = & ((M_NurbsSurface *) node)->colorIndex;
25759 0 : return GF_OK;
25760 : case 9:
25761 0 : info->name = "colorPerVertex";
25762 0 : info->eventType = GF_SG_EVENT_FIELD;
25763 0 : info->fieldType = GF_SG_VRML_SFBOOL;
25764 0 : info->far_ptr = & ((M_NurbsSurface *) node)->colorPerVertex;
25765 0 : return GF_OK;
25766 : case 10:
25767 0 : info->name = "solid";
25768 0 : info->eventType = GF_SG_EVENT_FIELD;
25769 0 : info->fieldType = GF_SG_VRML_SFBOOL;
25770 0 : info->far_ptr = & ((M_NurbsSurface *) node)->solid;
25771 0 : return GF_OK;
25772 : case 11:
25773 0 : info->name = "texColorIndex";
25774 0 : info->eventType = GF_SG_EVENT_FIELD;
25775 0 : info->fieldType = GF_SG_VRML_MFINT32;
25776 0 : info->far_ptr = & ((M_NurbsSurface *) node)->texColorIndex;
25777 0 : return GF_OK;
25778 : case 12:
25779 0 : info->name = "uDimension";
25780 0 : info->eventType = GF_SG_EVENT_FIELD;
25781 0 : info->fieldType = GF_SG_VRML_SFINT32;
25782 0 : info->far_ptr = & ((M_NurbsSurface *) node)->uDimension;
25783 0 : return GF_OK;
25784 : case 13:
25785 0 : info->name = "uKnot";
25786 0 : info->eventType = GF_SG_EVENT_FIELD;
25787 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
25788 0 : info->far_ptr = & ((M_NurbsSurface *) node)->uKnot;
25789 0 : return GF_OK;
25790 : case 14:
25791 0 : info->name = "uOrder";
25792 0 : info->eventType = GF_SG_EVENT_FIELD;
25793 0 : info->fieldType = GF_SG_VRML_SFINT32;
25794 0 : info->far_ptr = & ((M_NurbsSurface *) node)->uOrder;
25795 0 : return GF_OK;
25796 : case 15:
25797 0 : info->name = "vDimension";
25798 0 : info->eventType = GF_SG_EVENT_FIELD;
25799 0 : info->fieldType = GF_SG_VRML_SFINT32;
25800 0 : info->far_ptr = & ((M_NurbsSurface *) node)->vDimension;
25801 0 : return GF_OK;
25802 : case 16:
25803 0 : info->name = "vKnot";
25804 0 : info->eventType = GF_SG_EVENT_FIELD;
25805 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
25806 0 : info->far_ptr = & ((M_NurbsSurface *) node)->vKnot;
25807 0 : return GF_OK;
25808 : case 17:
25809 0 : info->name = "vOrder";
25810 0 : info->eventType = GF_SG_EVENT_FIELD;
25811 0 : info->fieldType = GF_SG_VRML_SFINT32;
25812 0 : info->far_ptr = & ((M_NurbsSurface *) node)->vOrder;
25813 0 : return GF_OK;
25814 : default:
25815 0 : return GF_BAD_PARAM;
25816 : }
25817 0 : }
25818 :
25819 :
25820 : static s32 NurbsSurface_get_field_index_by_name(char *name)
25821 : {
25822 0 : if (!strcmp("set_colorIndex", name)) return 0;
25823 0 : if (!strcmp("set_texColorIndex", name)) return 1;
25824 0 : if (!strcmp("color", name)) return 2;
25825 0 : if (!strcmp("controlPoint", name)) return 3;
25826 0 : if (!strcmp("texCoord", name)) return 4;
25827 0 : if (!strcmp("uTessellation", name)) return 5;
25828 0 : if (!strcmp("vTessellation", name)) return 6;
25829 0 : if (!strcmp("ccw", name)) return 7;
25830 0 : if (!strcmp("colorIndex", name)) return 8;
25831 0 : if (!strcmp("colorPerVertex", name)) return 9;
25832 0 : if (!strcmp("solid", name)) return 10;
25833 0 : if (!strcmp("texColorIndex", name)) return 11;
25834 0 : if (!strcmp("uDimension", name)) return 12;
25835 0 : if (!strcmp("uKnot", name)) return 13;
25836 0 : if (!strcmp("uOrder", name)) return 14;
25837 0 : if (!strcmp("vDimension", name)) return 15;
25838 0 : if (!strcmp("vKnot", name)) return 16;
25839 0 : if (!strcmp("vOrder", name)) return 17;
25840 0 : return -1;
25841 0 : }
25842 : static Bool NurbsSurface_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
25843 : {
25844 0 : switch (FieldIndex) {
25845 : case 3:
25846 0 : *AType = 15;
25847 0 : *QType = 15;
25848 0 : *b_min = FIX_MIN;
25849 0 : *b_max = FIX_MAX;
25850 0 : return 1;
25851 : case 8:
25852 0 : *AType = 0;
25853 0 : *QType = 14;
25854 0 : return 1;
25855 : case 11:
25856 0 : *AType = 0;
25857 0 : *QType = 14;
25858 0 : return 1;
25859 : case 12:
25860 0 : *AType = 0;
25861 0 : *QType = 13;
25862 0 : *QT13_bits = 8;
25863 0 : *b_min = FLT2FIX(3);
25864 0 : *b_max = FLT2FIX(258);
25865 0 : return 1;
25866 : case 14:
25867 0 : *AType = 0;
25868 0 : *QType = 13;
25869 0 : *QT13_bits = 5;
25870 0 : *b_min = FLT2FIX(3);
25871 0 : *b_max = FLT2FIX(34);
25872 0 : return 1;
25873 : case 15:
25874 0 : *AType = 0;
25875 0 : *QType = 13;
25876 0 : *QT13_bits = 8;
25877 0 : *b_min = FLT2FIX(3);
25878 0 : *b_max = FLT2FIX(258);
25879 0 : return 1;
25880 : case 17:
25881 0 : *AType = 0;
25882 0 : *QType = 13;
25883 0 : *QT13_bits = 5;
25884 0 : *b_min = FLT2FIX(3);
25885 0 : *b_max = FLT2FIX(34);
25886 0 : return 1;
25887 : default:
25888 0 : return 0;
25889 : }
25890 0 : }
25891 :
25892 :
25893 :
25894 : GF_Node *NurbsSurface_Create()
25895 : {
25896 : M_NurbsSurface *p;
25897 0 : GF_SAFEALLOC(p, M_NurbsSurface);
25898 0 : if(!p) return NULL;
25899 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_NurbsSurface);
25900 :
25901 : /*default field values*/
25902 0 : p->uTessellation = 0;
25903 0 : p->vTessellation = 0;
25904 0 : p->ccw = 1;
25905 0 : p->colorPerVertex = 1;
25906 0 : p->solid = 1;
25907 0 : p->uDimension = 4;
25908 0 : p->uOrder = 4;
25909 0 : p->vDimension = 4;
25910 0 : p->vOrder = 4;
25911 0 : return (GF_Node *)p;
25912 0 : }
25913 :
25914 :
25915 : /*
25916 : OctreeImage Node deletion
25917 : */
25918 :
25919 : static void OctreeImage_Del(GF_Node *node)
25920 : {
25921 0 : M_OctreeImage *p = (M_OctreeImage *) node;
25922 0 : gf_node_unregister_children((GF_Node *) p, p->images);
25923 0 : gf_sg_mfint32_del(p->octree);
25924 0 : gf_sg_mfint32_del(p->voxelImageIndex);
25925 0 : gf_node_free((GF_Node *) p);
25926 0 : }
25927 :
25928 : static const u16 OctreeImage_Def2All[] = { 0, 1, 2, 3};
25929 :
25930 : static u32 OctreeImage_get_field_count(GF_Node *node, u8 IndexMode)
25931 : {
25932 0 : switch(IndexMode) {
25933 : case GF_SG_FIELD_CODING_IN:
25934 0 : return 0;
25935 : case GF_SG_FIELD_CODING_DEF:
25936 0 : return 4;
25937 : case GF_SG_FIELD_CODING_OUT:
25938 0 : return 0;
25939 : case GF_SG_FIELD_CODING_DYN:
25940 0 : return 0;
25941 : default:
25942 0 : return 4;
25943 : }
25944 0 : }
25945 :
25946 : static GF_Err OctreeImage_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
25947 : {
25948 0 : switch(IndexMode) {
25949 : case GF_SG_FIELD_CODING_DEF:
25950 0 : *allField = OctreeImage_Def2All[inField];
25951 0 : return GF_OK;
25952 : default:
25953 0 : return GF_BAD_PARAM;
25954 : }
25955 0 : }
25956 : static GF_Err OctreeImage_get_field(GF_Node *node, GF_FieldInfo *info)
25957 : {
25958 0 : switch (info->fieldIndex) {
25959 : case 0:
25960 0 : info->name = "images";
25961 0 : info->eventType = GF_SG_EVENT_FIELD;
25962 0 : info->fieldType = GF_SG_VRML_MFNODE;
25963 0 : info->NDTtype = NDT_SFDepthImageNode;
25964 0 : info->far_ptr = & ((M_OctreeImage *)node)->images;
25965 0 : return GF_OK;
25966 : case 1:
25967 0 : info->name = "octree";
25968 0 : info->eventType = GF_SG_EVENT_FIELD;
25969 0 : info->fieldType = GF_SG_VRML_MFINT32;
25970 0 : info->far_ptr = & ((M_OctreeImage *) node)->octree;
25971 0 : return GF_OK;
25972 : case 2:
25973 0 : info->name = "octreeResolution";
25974 0 : info->eventType = GF_SG_EVENT_FIELD;
25975 0 : info->fieldType = GF_SG_VRML_SFINT32;
25976 0 : info->far_ptr = & ((M_OctreeImage *) node)->octreeResolution;
25977 0 : return GF_OK;
25978 : case 3:
25979 0 : info->name = "voxelImageIndex";
25980 0 : info->eventType = GF_SG_EVENT_FIELD;
25981 0 : info->fieldType = GF_SG_VRML_MFINT32;
25982 0 : info->far_ptr = & ((M_OctreeImage *) node)->voxelImageIndex;
25983 0 : return GF_OK;
25984 : default:
25985 0 : return GF_BAD_PARAM;
25986 : }
25987 0 : }
25988 :
25989 :
25990 : static s32 OctreeImage_get_field_index_by_name(char *name)
25991 : {
25992 0 : if (!strcmp("images", name)) return 0;
25993 0 : if (!strcmp("octree", name)) return 1;
25994 0 : if (!strcmp("octreeResolution", name)) return 2;
25995 0 : if (!strcmp("voxelImageIndex", name)) return 3;
25996 0 : return -1;
25997 0 : }
25998 : static Bool OctreeImage_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
25999 : {
26000 0 : switch (FieldIndex) {
26001 : case 1:
26002 0 : *AType = 0;
26003 0 : *QType = 13;
26004 0 : *QT13_bits = 8;
26005 0 : *b_min = FLT2FIX(0);
26006 0 : *b_max = FLT2FIX(255);
26007 0 : return 1;
26008 : case 3:
26009 0 : *AType = 0;
26010 0 : *QType = 13;
26011 0 : *QT13_bits = 8;
26012 0 : *b_min = FLT2FIX(0);
26013 0 : *b_max = FLT2FIX(255);
26014 0 : return 1;
26015 : default:
26016 0 : return 0;
26017 : }
26018 0 : }
26019 :
26020 :
26021 :
26022 : GF_Node *OctreeImage_Create()
26023 : {
26024 : M_OctreeImage *p;
26025 0 : GF_SAFEALLOC(p, M_OctreeImage);
26026 0 : if(!p) return NULL;
26027 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_OctreeImage);
26028 :
26029 : /*default field values*/
26030 0 : p->octreeResolution = 256;
26031 0 : return (GF_Node *)p;
26032 0 : }
26033 :
26034 :
26035 : /*
26036 : XXParticles Node deletion
26037 : */
26038 :
26039 : static void XXParticles_Del(GF_Node *node)
26040 : {
26041 0 : M_XXParticles *p = (M_XXParticles *) node;
26042 0 : gf_node_unregister_children((GF_Node *) p, p->influences);
26043 0 : gf_node_unregister((GF_Node *) p->init, (GF_Node *) p);
26044 0 : gf_node_unregister((GF_Node *) p->primitive, (GF_Node *) p);
26045 0 : gf_node_free((GF_Node *) p);
26046 0 : }
26047 :
26048 : static const u16 XXParticles_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24};
26049 : static const u16 XXParticles_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24};
26050 : static const u16 XXParticles_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24};
26051 :
26052 : static u32 XXParticles_get_field_count(GF_Node *node, u8 IndexMode)
26053 : {
26054 0 : switch(IndexMode) {
26055 : case GF_SG_FIELD_CODING_IN:
26056 0 : return 25;
26057 : case GF_SG_FIELD_CODING_DEF:
26058 0 : return 25;
26059 : case GF_SG_FIELD_CODING_OUT:
26060 0 : return 25;
26061 : case GF_SG_FIELD_CODING_DYN:
26062 0 : return 0;
26063 : default:
26064 0 : return 25;
26065 : }
26066 0 : }
26067 :
26068 : static GF_Err XXParticles_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
26069 : {
26070 0 : switch(IndexMode) {
26071 : case GF_SG_FIELD_CODING_IN:
26072 0 : *allField = XXParticles_In2All[inField];
26073 0 : return GF_OK;
26074 : case GF_SG_FIELD_CODING_DEF:
26075 0 : *allField = XXParticles_Def2All[inField];
26076 0 : return GF_OK;
26077 : case GF_SG_FIELD_CODING_OUT:
26078 0 : *allField = XXParticles_Out2All[inField];
26079 0 : return GF_OK;
26080 : default:
26081 0 : return GF_BAD_PARAM;
26082 : }
26083 0 : }
26084 : static GF_Err XXParticles_get_field(GF_Node *node, GF_FieldInfo *info)
26085 : {
26086 0 : switch (info->fieldIndex) {
26087 : case 0:
26088 0 : info->name = "creationRate";
26089 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26090 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26091 0 : info->far_ptr = & ((M_XXParticles *) node)->creationRate;
26092 0 : return GF_OK;
26093 : case 1:
26094 0 : info->name = "creationRateVariation";
26095 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26096 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26097 0 : info->far_ptr = & ((M_XXParticles *) node)->creationRateVariation;
26098 0 : return GF_OK;
26099 : case 2:
26100 0 : info->name = "emitAlpha";
26101 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26102 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26103 0 : info->far_ptr = & ((M_XXParticles *) node)->emitAlpha;
26104 0 : return GF_OK;
26105 : case 3:
26106 0 : info->name = "emitColor";
26107 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26108 0 : info->fieldType = GF_SG_VRML_SFCOLOR;
26109 0 : info->far_ptr = & ((M_XXParticles *) node)->emitColor;
26110 0 : return GF_OK;
26111 : case 4:
26112 0 : info->name = "emitColorVariation";
26113 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26114 0 : info->fieldType = GF_SG_VRML_SFCOLOR;
26115 0 : info->far_ptr = & ((M_XXParticles *) node)->emitColorVariation;
26116 0 : return GF_OK;
26117 : case 5:
26118 0 : info->name = "emitterPosition";
26119 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26120 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
26121 0 : info->far_ptr = & ((M_XXParticles *) node)->emitterPosition;
26122 0 : return GF_OK;
26123 : case 6:
26124 0 : info->name = "emitVelocity";
26125 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26126 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
26127 0 : info->far_ptr = & ((M_XXParticles *) node)->emitVelocity;
26128 0 : return GF_OK;
26129 : case 7:
26130 0 : info->name = "emitVelocityVariation";
26131 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26132 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
26133 0 : info->far_ptr = & ((M_XXParticles *) node)->emitVelocityVariation;
26134 0 : return GF_OK;
26135 : case 8:
26136 0 : info->name = "enabled";
26137 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26138 0 : info->fieldType = GF_SG_VRML_SFBOOL;
26139 0 : info->far_ptr = & ((M_XXParticles *) node)->enabled;
26140 0 : return GF_OK;
26141 : case 9:
26142 0 : info->name = "fadeAlpha";
26143 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26144 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26145 0 : info->far_ptr = & ((M_XXParticles *) node)->fadeAlpha;
26146 0 : return GF_OK;
26147 : case 10:
26148 0 : info->name = "fadeColor";
26149 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26150 0 : info->fieldType = GF_SG_VRML_SFCOLOR;
26151 0 : info->far_ptr = & ((M_XXParticles *) node)->fadeColor;
26152 0 : return GF_OK;
26153 : case 11:
26154 0 : info->name = "fadeRate";
26155 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26156 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26157 0 : info->far_ptr = & ((M_XXParticles *) node)->fadeRate;
26158 0 : return GF_OK;
26159 : case 12:
26160 0 : info->name = "force";
26161 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26162 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
26163 0 : info->far_ptr = & ((M_XXParticles *) node)->force;
26164 0 : return GF_OK;
26165 : case 13:
26166 0 : info->name = "influences";
26167 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26168 0 : info->fieldType = GF_SG_VRML_MFNODE;
26169 0 : info->NDTtype = NDT_SFInfluenceNode;
26170 0 : info->far_ptr = & ((M_XXParticles *)node)->influences;
26171 0 : return GF_OK;
26172 : case 14:
26173 0 : info->name = "init";
26174 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26175 0 : info->fieldType = GF_SG_VRML_SFNODE;
26176 0 : info->NDTtype = NDT_SFWorldNode;
26177 0 : info->far_ptr = & ((M_XXParticles *)node)->init;
26178 0 : return GF_OK;
26179 : case 15:
26180 0 : info->name = "maxLifeTime";
26181 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26182 0 : info->fieldType = GF_SG_VRML_SFTIME;
26183 0 : info->far_ptr = & ((M_XXParticles *) node)->maxLifeTime;
26184 0 : return GF_OK;
26185 : case 16:
26186 0 : info->name = "maxLifeTimeVariation";
26187 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26188 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26189 0 : info->far_ptr = & ((M_XXParticles *) node)->maxLifeTimeVariation;
26190 0 : return GF_OK;
26191 : case 17:
26192 0 : info->name = "maxParticles";
26193 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26194 0 : info->fieldType = GF_SG_VRML_SFINT32;
26195 0 : info->far_ptr = & ((M_XXParticles *) node)->maxParticles;
26196 0 : return GF_OK;
26197 : case 18:
26198 0 : info->name = "minRange";
26199 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26200 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26201 0 : info->far_ptr = & ((M_XXParticles *) node)->minRange;
26202 0 : return GF_OK;
26203 : case 19:
26204 0 : info->name = "maxRange";
26205 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26206 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26207 0 : info->far_ptr = & ((M_XXParticles *) node)->maxRange;
26208 0 : return GF_OK;
26209 : case 20:
26210 0 : info->name = "primitive";
26211 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26212 0 : info->fieldType = GF_SG_VRML_SFNODE;
26213 0 : info->NDTtype = NDT_SFWorldNode;
26214 0 : info->far_ptr = & ((M_XXParticles *)node)->primitive;
26215 0 : return GF_OK;
26216 : case 21:
26217 0 : info->name = "primitiveType";
26218 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26219 0 : info->fieldType = GF_SG_VRML_SFINT32;
26220 0 : info->far_ptr = & ((M_XXParticles *) node)->primitiveType;
26221 0 : return GF_OK;
26222 : case 22:
26223 0 : info->name = "particleRadius";
26224 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26225 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26226 0 : info->far_ptr = & ((M_XXParticles *) node)->particleRadius;
26227 0 : return GF_OK;
26228 : case 23:
26229 0 : info->name = "particleRadiusRate";
26230 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26231 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26232 0 : info->far_ptr = & ((M_XXParticles *) node)->particleRadiusRate;
26233 0 : return GF_OK;
26234 : case 24:
26235 0 : info->name = "particleRadiusVariation";
26236 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26237 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26238 0 : info->far_ptr = & ((M_XXParticles *) node)->particleRadiusVariation;
26239 0 : return GF_OK;
26240 : default:
26241 0 : return GF_BAD_PARAM;
26242 : }
26243 0 : }
26244 :
26245 :
26246 : static s32 XXParticles_get_field_index_by_name(char *name)
26247 : {
26248 0 : if (!strcmp("creationRate", name)) return 0;
26249 0 : if (!strcmp("creationRateVariation", name)) return 1;
26250 0 : if (!strcmp("emitAlpha", name)) return 2;
26251 0 : if (!strcmp("emitColor", name)) return 3;
26252 0 : if (!strcmp("emitColorVariation", name)) return 4;
26253 0 : if (!strcmp("emitterPosition", name)) return 5;
26254 0 : if (!strcmp("emitVelocity", name)) return 6;
26255 0 : if (!strcmp("emitVelocityVariation", name)) return 7;
26256 0 : if (!strcmp("enabled", name)) return 8;
26257 0 : if (!strcmp("fadeAlpha", name)) return 9;
26258 0 : if (!strcmp("fadeColor", name)) return 10;
26259 0 : if (!strcmp("fadeRate", name)) return 11;
26260 0 : if (!strcmp("force", name)) return 12;
26261 0 : if (!strcmp("influences", name)) return 13;
26262 0 : if (!strcmp("init", name)) return 14;
26263 0 : if (!strcmp("maxLifeTime", name)) return 15;
26264 0 : if (!strcmp("maxLifeTimeVariation", name)) return 16;
26265 0 : if (!strcmp("maxParticles", name)) return 17;
26266 0 : if (!strcmp("minRange", name)) return 18;
26267 0 : if (!strcmp("maxRange", name)) return 19;
26268 0 : if (!strcmp("primitive", name)) return 20;
26269 0 : if (!strcmp("primitiveType", name)) return 21;
26270 0 : if (!strcmp("particleRadius", name)) return 22;
26271 0 : if (!strcmp("particleRadiusRate", name)) return 23;
26272 0 : if (!strcmp("particleRadiusVariation", name)) return 24;
26273 0 : return -1;
26274 0 : }
26275 : static Bool XXParticles_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
26276 : {
26277 : switch (FieldIndex) {
26278 : default:
26279 0 : return 0;
26280 : }
26281 : }
26282 :
26283 :
26284 :
26285 : GF_Node *XXParticles_Create()
26286 : {
26287 : M_XXParticles *p;
26288 0 : GF_SAFEALLOC(p, M_XXParticles);
26289 0 : if(!p) return NULL;
26290 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXParticles);
26291 :
26292 : /*default field values*/
26293 0 : p->creationRate = FLT2FIX(500);
26294 0 : p->creationRateVariation = FLT2FIX(0);
26295 0 : p->emitAlpha = FLT2FIX(1.0);
26296 0 : p->emitColor.red = FLT2FIX(1);
26297 0 : p->emitColor.green = FLT2FIX(1);
26298 0 : p->emitColor.blue = FLT2FIX(1);
26299 0 : p->emitColorVariation.red = FLT2FIX(0);
26300 0 : p->emitColorVariation.green = FLT2FIX(0);
26301 0 : p->emitColorVariation.blue = FLT2FIX(0);
26302 0 : p->emitterPosition.x = FLT2FIX(0);
26303 0 : p->emitterPosition.y = FLT2FIX(3);
26304 0 : p->emitterPosition.z = FLT2FIX(0);
26305 0 : p->emitVelocity.x = FLT2FIX(0);
26306 0 : p->emitVelocity.y = FLT2FIX(0);
26307 0 : p->emitVelocity.z = FLT2FIX(0);
26308 0 : p->emitVelocityVariation.x = FLT2FIX(1);
26309 0 : p->emitVelocityVariation.y = FLT2FIX(1);
26310 0 : p->emitVelocityVariation.z = FLT2FIX(1);
26311 0 : p->enabled = 1;
26312 0 : p->fadeAlpha = FLT2FIX(1.0);
26313 0 : p->fadeColor.red = FLT2FIX(0.25);
26314 0 : p->fadeColor.green = FLT2FIX(0.25);
26315 0 : p->fadeColor.blue = FLT2FIX(0.25);
26316 0 : p->fadeRate = FLT2FIX(0.25);
26317 0 : p->force.x = FLT2FIX(0);
26318 0 : p->force.y = FLT2FIX(-9.8);
26319 0 : p->force.z = FLT2FIX(0);
26320 0 : p->maxLifeTime = 5;
26321 0 : p->maxLifeTimeVariation = FLT2FIX(0);
26322 0 : p->maxParticles = 500;
26323 0 : p->minRange = FLT2FIX(1);
26324 0 : p->maxRange = FLT2FIX(-1);
26325 0 : p->primitiveType = 2;
26326 0 : p->particleRadius = FLT2FIX(0.1);
26327 0 : p->particleRadiusRate = FLT2FIX(0);
26328 0 : p->particleRadiusVariation = FLT2FIX(0);
26329 0 : return (GF_Node *)p;
26330 0 : }
26331 :
26332 :
26333 : /*
26334 : XXParticleInitBox Node deletion
26335 : */
26336 :
26337 : static void XXParticleInitBox_Del(GF_Node *node)
26338 : {
26339 0 : M_XXParticleInitBox *p = (M_XXParticleInitBox *) node;
26340 0 : gf_node_free((GF_Node *) p);
26341 0 : }
26342 :
26343 : static const u16 XXParticleInitBox_Def2All[] = { 0, 1};
26344 : static const u16 XXParticleInitBox_In2All[] = { 0, 1};
26345 : static const u16 XXParticleInitBox_Out2All[] = { 0, 1};
26346 :
26347 : static u32 XXParticleInitBox_get_field_count(GF_Node *node, u8 IndexMode)
26348 : {
26349 0 : switch(IndexMode) {
26350 : case GF_SG_FIELD_CODING_IN:
26351 0 : return 2;
26352 : case GF_SG_FIELD_CODING_DEF:
26353 0 : return 2;
26354 : case GF_SG_FIELD_CODING_OUT:
26355 0 : return 2;
26356 : case GF_SG_FIELD_CODING_DYN:
26357 0 : return 0;
26358 : default:
26359 0 : return 2;
26360 : }
26361 0 : }
26362 :
26363 : static GF_Err XXParticleInitBox_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
26364 : {
26365 0 : switch(IndexMode) {
26366 : case GF_SG_FIELD_CODING_IN:
26367 0 : *allField = XXParticleInitBox_In2All[inField];
26368 0 : return GF_OK;
26369 : case GF_SG_FIELD_CODING_DEF:
26370 0 : *allField = XXParticleInitBox_Def2All[inField];
26371 0 : return GF_OK;
26372 : case GF_SG_FIELD_CODING_OUT:
26373 0 : *allField = XXParticleInitBox_Out2All[inField];
26374 0 : return GF_OK;
26375 : default:
26376 0 : return GF_BAD_PARAM;
26377 : }
26378 0 : }
26379 : static GF_Err XXParticleInitBox_get_field(GF_Node *node, GF_FieldInfo *info)
26380 : {
26381 0 : switch (info->fieldIndex) {
26382 : case 0:
26383 0 : info->name = "falloff";
26384 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26385 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26386 0 : info->far_ptr = & ((M_XXParticleInitBox *) node)->falloff;
26387 0 : return GF_OK;
26388 : case 1:
26389 0 : info->name = "size";
26390 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26391 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
26392 0 : info->far_ptr = & ((M_XXParticleInitBox *) node)->size;
26393 0 : return GF_OK;
26394 : default:
26395 0 : return GF_BAD_PARAM;
26396 : }
26397 0 : }
26398 :
26399 :
26400 : static s32 XXParticleInitBox_get_field_index_by_name(char *name)
26401 : {
26402 0 : if (!strcmp("falloff", name)) return 0;
26403 0 : if (!strcmp("size", name)) return 1;
26404 0 : return -1;
26405 0 : }
26406 : static Bool XXParticleInitBox_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
26407 : {
26408 : switch (FieldIndex) {
26409 : default:
26410 0 : return 0;
26411 : }
26412 : }
26413 :
26414 :
26415 :
26416 : GF_Node *XXParticleInitBox_Create()
26417 : {
26418 : M_XXParticleInitBox *p;
26419 0 : GF_SAFEALLOC(p, M_XXParticleInitBox);
26420 0 : if(!p) return NULL;
26421 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXParticleInitBox);
26422 :
26423 : /*default field values*/
26424 0 : p->falloff = FLT2FIX(0);
26425 0 : p->size.x = FLT2FIX(1);
26426 0 : p->size.y = FLT2FIX(1);
26427 0 : p->size.z = FLT2FIX(1);
26428 0 : return (GF_Node *)p;
26429 0 : }
26430 :
26431 :
26432 : /*
26433 : XXPlanarObstacle Node deletion
26434 : */
26435 :
26436 : static void XXPlanarObstacle_Del(GF_Node *node)
26437 : {
26438 0 : M_XXPlanarObstacle *p = (M_XXPlanarObstacle *) node;
26439 0 : gf_node_free((GF_Node *) p);
26440 0 : }
26441 :
26442 : static const u16 XXPlanarObstacle_Def2All[] = { 0, 1, 2, 3};
26443 : static const u16 XXPlanarObstacle_In2All[] = { 0, 1, 2, 3};
26444 : static const u16 XXPlanarObstacle_Out2All[] = { 0, 1, 2, 3};
26445 :
26446 : static u32 XXPlanarObstacle_get_field_count(GF_Node *node, u8 IndexMode)
26447 : {
26448 0 : switch(IndexMode) {
26449 : case GF_SG_FIELD_CODING_IN:
26450 0 : return 4;
26451 : case GF_SG_FIELD_CODING_DEF:
26452 0 : return 4;
26453 : case GF_SG_FIELD_CODING_OUT:
26454 0 : return 4;
26455 : case GF_SG_FIELD_CODING_DYN:
26456 0 : return 0;
26457 : default:
26458 0 : return 4;
26459 : }
26460 0 : }
26461 :
26462 : static GF_Err XXPlanarObstacle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
26463 : {
26464 0 : switch(IndexMode) {
26465 : case GF_SG_FIELD_CODING_IN:
26466 0 : *allField = XXPlanarObstacle_In2All[inField];
26467 0 : return GF_OK;
26468 : case GF_SG_FIELD_CODING_DEF:
26469 0 : *allField = XXPlanarObstacle_Def2All[inField];
26470 0 : return GF_OK;
26471 : case GF_SG_FIELD_CODING_OUT:
26472 0 : *allField = XXPlanarObstacle_Out2All[inField];
26473 0 : return GF_OK;
26474 : default:
26475 0 : return GF_BAD_PARAM;
26476 : }
26477 0 : }
26478 : static GF_Err XXPlanarObstacle_get_field(GF_Node *node, GF_FieldInfo *info)
26479 : {
26480 0 : switch (info->fieldIndex) {
26481 : case 0:
26482 0 : info->name = "distance";
26483 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26484 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
26485 0 : info->far_ptr = & ((M_XXPlanarObstacle *) node)->distance;
26486 0 : return GF_OK;
26487 : case 1:
26488 0 : info->name = "normal";
26489 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26490 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
26491 0 : info->far_ptr = & ((M_XXPlanarObstacle *) node)->normal;
26492 0 : return GF_OK;
26493 : case 2:
26494 0 : info->name = "reflection";
26495 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26496 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26497 0 : info->far_ptr = & ((M_XXPlanarObstacle *) node)->reflection;
26498 0 : return GF_OK;
26499 : case 3:
26500 0 : info->name = "absorption";
26501 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26502 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26503 0 : info->far_ptr = & ((M_XXPlanarObstacle *) node)->absorption;
26504 0 : return GF_OK;
26505 : default:
26506 0 : return GF_BAD_PARAM;
26507 : }
26508 0 : }
26509 :
26510 :
26511 : static s32 XXPlanarObstacle_get_field_index_by_name(char *name)
26512 : {
26513 0 : if (!strcmp("distance", name)) return 0;
26514 0 : if (!strcmp("normal", name)) return 1;
26515 0 : if (!strcmp("reflection", name)) return 2;
26516 0 : if (!strcmp("absorption", name)) return 3;
26517 0 : return -1;
26518 0 : }
26519 : static Bool XXPlanarObstacle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
26520 : {
26521 : switch (FieldIndex) {
26522 : default:
26523 0 : return 0;
26524 : }
26525 : }
26526 :
26527 :
26528 :
26529 : GF_Node *XXPlanarObstacle_Create()
26530 : {
26531 : M_XXPlanarObstacle *p;
26532 0 : GF_SAFEALLOC(p, M_XXPlanarObstacle);
26533 0 : if(!p) return NULL;
26534 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXPlanarObstacle);
26535 :
26536 : /*default field values*/
26537 0 : p->distance.x = FLT2FIX(0);
26538 0 : p->distance.y = FLT2FIX(0);
26539 0 : p->distance.z = FLT2FIX(0);
26540 0 : p->normal.x = FLT2FIX(0);
26541 0 : p->normal.y = FLT2FIX(1);
26542 0 : p->normal.z = FLT2FIX(0);
26543 0 : p->reflection = FLT2FIX(0);
26544 0 : p->absorption = FLT2FIX(0);
26545 0 : return (GF_Node *)p;
26546 0 : }
26547 :
26548 :
26549 : /*
26550 : XXPointAttractor Node deletion
26551 : */
26552 :
26553 : static void XXPointAttractor_Del(GF_Node *node)
26554 : {
26555 0 : M_XXPointAttractor *p = (M_XXPointAttractor *) node;
26556 0 : gf_node_free((GF_Node *) p);
26557 0 : }
26558 :
26559 : static const u16 XXPointAttractor_Def2All[] = { 0, 1, 2, 3};
26560 : static const u16 XXPointAttractor_In2All[] = { 0, 1, 2, 3};
26561 : static const u16 XXPointAttractor_Out2All[] = { 0, 1, 2, 3};
26562 :
26563 : static u32 XXPointAttractor_get_field_count(GF_Node *node, u8 IndexMode)
26564 : {
26565 0 : switch(IndexMode) {
26566 : case GF_SG_FIELD_CODING_IN:
26567 0 : return 4;
26568 : case GF_SG_FIELD_CODING_DEF:
26569 0 : return 4;
26570 : case GF_SG_FIELD_CODING_OUT:
26571 0 : return 4;
26572 : case GF_SG_FIELD_CODING_DYN:
26573 0 : return 0;
26574 : default:
26575 0 : return 4;
26576 : }
26577 0 : }
26578 :
26579 : static GF_Err XXPointAttractor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
26580 : {
26581 0 : switch(IndexMode) {
26582 : case GF_SG_FIELD_CODING_IN:
26583 0 : *allField = XXPointAttractor_In2All[inField];
26584 0 : return GF_OK;
26585 : case GF_SG_FIELD_CODING_DEF:
26586 0 : *allField = XXPointAttractor_Def2All[inField];
26587 0 : return GF_OK;
26588 : case GF_SG_FIELD_CODING_OUT:
26589 0 : *allField = XXPointAttractor_Out2All[inField];
26590 0 : return GF_OK;
26591 : default:
26592 0 : return GF_BAD_PARAM;
26593 : }
26594 0 : }
26595 : static GF_Err XXPointAttractor_get_field(GF_Node *node, GF_FieldInfo *info)
26596 : {
26597 0 : switch (info->fieldIndex) {
26598 : case 0:
26599 0 : info->name = "innerRadius";
26600 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26601 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26602 0 : info->far_ptr = & ((M_XXPointAttractor *) node)->innerRadius;
26603 0 : return GF_OK;
26604 : case 1:
26605 0 : info->name = "outerRadius";
26606 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26607 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26608 0 : info->far_ptr = & ((M_XXPointAttractor *) node)->outerRadius;
26609 0 : return GF_OK;
26610 : case 2:
26611 0 : info->name = "position";
26612 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26613 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
26614 0 : info->far_ptr = & ((M_XXPointAttractor *) node)->position;
26615 0 : return GF_OK;
26616 : case 3:
26617 0 : info->name = "rate";
26618 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26619 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
26620 0 : info->far_ptr = & ((M_XXPointAttractor *) node)->rate;
26621 0 : return GF_OK;
26622 : default:
26623 0 : return GF_BAD_PARAM;
26624 : }
26625 0 : }
26626 :
26627 :
26628 : static s32 XXPointAttractor_get_field_index_by_name(char *name)
26629 : {
26630 0 : if (!strcmp("innerRadius", name)) return 0;
26631 0 : if (!strcmp("outerRadius", name)) return 1;
26632 0 : if (!strcmp("position", name)) return 2;
26633 0 : if (!strcmp("rate", name)) return 3;
26634 0 : return -1;
26635 0 : }
26636 : static Bool XXPointAttractor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
26637 : {
26638 : switch (FieldIndex) {
26639 : default:
26640 0 : return 0;
26641 : }
26642 : }
26643 :
26644 :
26645 :
26646 : GF_Node *XXPointAttractor_Create()
26647 : {
26648 : M_XXPointAttractor *p;
26649 0 : GF_SAFEALLOC(p, M_XXPointAttractor);
26650 0 : if(!p) return NULL;
26651 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXPointAttractor);
26652 :
26653 : /*default field values*/
26654 0 : p->innerRadius = FLT2FIX(10);
26655 0 : p->outerRadius = FLT2FIX(100);
26656 0 : p->position.x = FLT2FIX(0);
26657 0 : p->position.y = FLT2FIX(0);
26658 0 : p->position.z = FLT2FIX(0);
26659 0 : p->rate = FLT2FIX(1);
26660 0 : return (GF_Node *)p;
26661 0 : }
26662 :
26663 :
26664 : /*
26665 : PointTexture Node deletion
26666 : */
26667 :
26668 : static void PointTexture_Del(GF_Node *node)
26669 : {
26670 0 : M_PointTexture *p = (M_PointTexture *) node;
26671 0 : gf_sg_mfcolor_del(p->color);
26672 0 : gf_sg_mfint32_del(p->depth);
26673 0 : gf_node_free((GF_Node *) p);
26674 0 : }
26675 :
26676 : static const u16 PointTexture_Def2All[] = { 0, 1, 2, 3, 4};
26677 :
26678 : static u32 PointTexture_get_field_count(GF_Node *node, u8 IndexMode)
26679 : {
26680 0 : switch(IndexMode) {
26681 : case GF_SG_FIELD_CODING_IN:
26682 0 : return 0;
26683 : case GF_SG_FIELD_CODING_DEF:
26684 0 : return 5;
26685 : case GF_SG_FIELD_CODING_OUT:
26686 0 : return 0;
26687 : case GF_SG_FIELD_CODING_DYN:
26688 0 : return 0;
26689 : default:
26690 0 : return 5;
26691 : }
26692 0 : }
26693 :
26694 : static GF_Err PointTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
26695 : {
26696 0 : switch(IndexMode) {
26697 : case GF_SG_FIELD_CODING_DEF:
26698 0 : *allField = PointTexture_Def2All[inField];
26699 0 : return GF_OK;
26700 : default:
26701 0 : return GF_BAD_PARAM;
26702 : }
26703 0 : }
26704 : static GF_Err PointTexture_get_field(GF_Node *node, GF_FieldInfo *info)
26705 : {
26706 0 : switch (info->fieldIndex) {
26707 : case 0:
26708 0 : info->name = "color";
26709 0 : info->eventType = GF_SG_EVENT_FIELD;
26710 0 : info->fieldType = GF_SG_VRML_MFCOLOR;
26711 0 : info->far_ptr = & ((M_PointTexture *) node)->color;
26712 0 : return GF_OK;
26713 : case 1:
26714 0 : info->name = "depth";
26715 0 : info->eventType = GF_SG_EVENT_FIELD;
26716 0 : info->fieldType = GF_SG_VRML_MFINT32;
26717 0 : info->far_ptr = & ((M_PointTexture *) node)->depth;
26718 0 : return GF_OK;
26719 : case 2:
26720 0 : info->name = "depthNbBits";
26721 0 : info->eventType = GF_SG_EVENT_FIELD;
26722 0 : info->fieldType = GF_SG_VRML_SFINT32;
26723 0 : info->far_ptr = & ((M_PointTexture *) node)->depthNbBits;
26724 0 : return GF_OK;
26725 : case 3:
26726 0 : info->name = "height";
26727 0 : info->eventType = GF_SG_EVENT_FIELD;
26728 0 : info->fieldType = GF_SG_VRML_SFINT32;
26729 0 : info->far_ptr = & ((M_PointTexture *) node)->height;
26730 0 : return GF_OK;
26731 : case 4:
26732 0 : info->name = "width";
26733 0 : info->eventType = GF_SG_EVENT_FIELD;
26734 0 : info->fieldType = GF_SG_VRML_SFINT32;
26735 0 : info->far_ptr = & ((M_PointTexture *) node)->width;
26736 0 : return GF_OK;
26737 : default:
26738 0 : return GF_BAD_PARAM;
26739 : }
26740 0 : }
26741 :
26742 :
26743 : static s32 PointTexture_get_field_index_by_name(char *name)
26744 : {
26745 0 : if (!strcmp("color", name)) return 0;
26746 0 : if (!strcmp("depth", name)) return 1;
26747 0 : if (!strcmp("depthNbBits", name)) return 2;
26748 0 : if (!strcmp("height", name)) return 3;
26749 0 : if (!strcmp("width", name)) return 4;
26750 0 : return -1;
26751 0 : }
26752 : static Bool PointTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
26753 : {
26754 0 : switch (FieldIndex) {
26755 : case 2:
26756 0 : *AType = 0;
26757 0 : *QType = 13;
26758 0 : *QT13_bits = 5;
26759 0 : *b_min = FLT2FIX(0);
26760 0 : *b_max = FLT2FIX(31);
26761 0 : return 1;
26762 : default:
26763 0 : return 0;
26764 : }
26765 0 : }
26766 :
26767 :
26768 :
26769 : GF_Node *PointTexture_Create()
26770 : {
26771 : M_PointTexture *p;
26772 0 : GF_SAFEALLOC(p, M_PointTexture);
26773 0 : if(!p) return NULL;
26774 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PointTexture);
26775 :
26776 : /*default field values*/
26777 0 : p->depthNbBits = 7;
26778 0 : p->height = 256;
26779 0 : p->width = 256;
26780 0 : return (GF_Node *)p;
26781 0 : }
26782 :
26783 :
26784 : /*
26785 : PositionAnimator Node deletion
26786 : */
26787 :
26788 : static void PositionAnimator_Del(GF_Node *node)
26789 : {
26790 36 : M_PositionAnimator *p = (M_PositionAnimator *) node;
26791 18 : gf_sg_mffloat_del(p->key);
26792 18 : gf_sg_mfrotation_del(p->keyOrientation);
26793 18 : gf_sg_mfvec2f_del(p->keySpline);
26794 18 : gf_sg_mfvec3f_del(p->keyValue);
26795 18 : gf_sg_mffloat_del(p->weight);
26796 18 : gf_node_free((GF_Node *) p);
26797 18 : }
26798 :
26799 : static const u16 PositionAnimator_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
26800 : static const u16 PositionAnimator_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
26801 : static const u16 PositionAnimator_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
26802 :
26803 : static u32 PositionAnimator_get_field_count(GF_Node *node, u8 IndexMode)
26804 : {
26805 68 : switch(IndexMode) {
26806 : case GF_SG_FIELD_CODING_IN:
26807 9 : return 10;
26808 : case GF_SG_FIELD_CODING_DEF:
26809 9 : return 9;
26810 : case GF_SG_FIELD_CODING_OUT:
26811 9 : return 12;
26812 : case GF_SG_FIELD_CODING_DYN:
26813 0 : return 0;
26814 : default:
26815 7 : return 13;
26816 : }
26817 34 : }
26818 :
26819 : static GF_Err PositionAnimator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
26820 : {
26821 158 : switch(IndexMode) {
26822 : case GF_SG_FIELD_CODING_IN:
26823 7 : *allField = PositionAnimator_In2All[inField];
26824 7 : return GF_OK;
26825 : case GF_SG_FIELD_CODING_DEF:
26826 43 : *allField = PositionAnimator_Def2All[inField];
26827 43 : return GF_OK;
26828 : case GF_SG_FIELD_CODING_OUT:
26829 29 : *allField = PositionAnimator_Out2All[inField];
26830 29 : return GF_OK;
26831 : default:
26832 0 : return GF_BAD_PARAM;
26833 : }
26834 79 : }
26835 : static GF_Err PositionAnimator_get_field(GF_Node *node, GF_FieldInfo *info)
26836 : {
26837 562 : switch (info->fieldIndex) {
26838 : case 0:
26839 15 : info->name = "set_fraction";
26840 15 : info->eventType = GF_SG_EVENT_IN;
26841 15 : info->on_event_in = ((M_PositionAnimator *)node)->on_set_fraction;
26842 15 : info->fieldType = GF_SG_VRML_SFFLOAT;
26843 15 : info->far_ptr = & ((M_PositionAnimator *) node)->set_fraction;
26844 15 : return GF_OK;
26845 : case 1:
26846 18 : info->name = "fromTo";
26847 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26848 18 : info->fieldType = GF_SG_VRML_SFVEC2F;
26849 18 : info->far_ptr = & ((M_PositionAnimator *) node)->fromTo;
26850 18 : return GF_OK;
26851 : case 2:
26852 33 : info->name = "key";
26853 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26854 33 : info->fieldType = GF_SG_VRML_MFFLOAT;
26855 33 : info->far_ptr = & ((M_PositionAnimator *) node)->key;
26856 33 : return GF_OK;
26857 : case 3:
26858 18 : info->name = "keyOrientation";
26859 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26860 18 : info->fieldType = GF_SG_VRML_MFROTATION;
26861 18 : info->far_ptr = & ((M_PositionAnimator *) node)->keyOrientation;
26862 18 : return GF_OK;
26863 : case 4:
26864 33 : info->name = "keyType";
26865 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26866 33 : info->fieldType = GF_SG_VRML_SFINT32;
26867 33 : info->far_ptr = & ((M_PositionAnimator *) node)->keyType;
26868 33 : return GF_OK;
26869 : case 5:
26870 33 : info->name = "keySpline";
26871 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26872 33 : info->fieldType = GF_SG_VRML_MFVEC2F;
26873 33 : info->far_ptr = & ((M_PositionAnimator *) node)->keySpline;
26874 33 : return GF_OK;
26875 : case 6:
26876 33 : info->name = "keyValue";
26877 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26878 33 : info->fieldType = GF_SG_VRML_MFVEC3F;
26879 33 : info->far_ptr = & ((M_PositionAnimator *) node)->keyValue;
26880 33 : return GF_OK;
26881 : case 7:
26882 33 : info->name = "keyValueType";
26883 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26884 33 : info->fieldType = GF_SG_VRML_SFINT32;
26885 33 : info->far_ptr = & ((M_PositionAnimator *) node)->keyValueType;
26886 33 : return GF_OK;
26887 : case 8:
26888 18 : info->name = "offset";
26889 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26890 18 : info->fieldType = GF_SG_VRML_SFVEC3F;
26891 18 : info->far_ptr = & ((M_PositionAnimator *) node)->offset;
26892 18 : return GF_OK;
26893 : case 9:
26894 18 : info->name = "weight";
26895 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26896 18 : info->fieldType = GF_SG_VRML_MFFLOAT;
26897 18 : info->far_ptr = & ((M_PositionAnimator *) node)->weight;
26898 18 : return GF_OK;
26899 : case 10:
26900 7 : info->name = "endValue";
26901 7 : info->eventType = GF_SG_EVENT_OUT;
26902 7 : info->fieldType = GF_SG_VRML_SFVEC3F;
26903 7 : info->far_ptr = & ((M_PositionAnimator *) node)->endValue;
26904 7 : return GF_OK;
26905 : case 11:
26906 7 : info->name = "rotation_changed";
26907 7 : info->eventType = GF_SG_EVENT_OUT;
26908 7 : info->fieldType = GF_SG_VRML_SFROTATION;
26909 7 : info->far_ptr = & ((M_PositionAnimator *) node)->rotation_changed;
26910 7 : return GF_OK;
26911 : case 12:
26912 15 : info->name = "value_changed";
26913 15 : info->eventType = GF_SG_EVENT_OUT;
26914 15 : info->fieldType = GF_SG_VRML_SFVEC3F;
26915 15 : info->far_ptr = & ((M_PositionAnimator *) node)->value_changed;
26916 15 : return GF_OK;
26917 : default:
26918 0 : return GF_BAD_PARAM;
26919 : }
26920 281 : }
26921 :
26922 :
26923 : static s32 PositionAnimator_get_field_index_by_name(char *name)
26924 : {
26925 60 : if (!strcmp("set_fraction", name)) return 0;
26926 24 : if (!strcmp("fromTo", name)) return 1;
26927 28 : if (!strcmp("key", name)) return 2;
26928 20 : if (!strcmp("keyOrientation", name)) return 3;
26929 24 : if (!strcmp("keyType", name)) return 4;
26930 20 : if (!strcmp("keySpline", name)) return 5;
26931 16 : if (!strcmp("keyValue", name)) return 6;
26932 12 : if (!strcmp("keyValueType", name)) return 7;
26933 4 : if (!strcmp("offset", name)) return 8;
26934 4 : if (!strcmp("weight", name)) return 9;
26935 4 : if (!strcmp("endValue", name)) return 10;
26936 4 : if (!strcmp("rotation_changed", name)) return 11;
26937 8 : if (!strcmp("value_changed", name)) return 12;
26938 0 : return -1;
26939 28 : }
26940 : static Bool PositionAnimator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
26941 : {
26942 0 : switch (FieldIndex) {
26943 : case 1:
26944 0 : *AType = 0;
26945 0 : *QType = 8;
26946 0 : return 1;
26947 : case 2:
26948 0 : *AType = 0;
26949 0 : *QType = 8;
26950 0 : return 1;
26951 : case 5:
26952 0 : *AType = 0;
26953 0 : *QType = 8;
26954 0 : return 1;
26955 : case 6:
26956 0 : *AType = 0;
26957 0 : *QType = 4;
26958 0 : return 1;
26959 : case 8:
26960 0 : *AType = 0;
26961 0 : *QType = 1;
26962 0 : *b_min = FIX_MIN;
26963 0 : *b_max = FIX_MAX;
26964 0 : return 1;
26965 : default:
26966 0 : return 0;
26967 : }
26968 0 : }
26969 :
26970 :
26971 :
26972 : GF_Node *PositionAnimator_Create()
26973 : {
26974 : M_PositionAnimator *p;
26975 54 : GF_SAFEALLOC(p, M_PositionAnimator);
26976 18 : if(!p) return NULL;
26977 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionAnimator);
26978 :
26979 : /*default field values*/
26980 18 : p->fromTo.x = FLT2FIX(0);
26981 18 : p->fromTo.y = FLT2FIX(1);
26982 18 : p->keyType = 0;
26983 18 : p->keySpline.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
26984 18 : p->keySpline.count = 2;
26985 18 : p->keySpline.vals[0].x = FLT2FIX(0);
26986 18 : p->keySpline.vals[0].y = FLT2FIX(0);
26987 18 : p->keySpline.vals[1].x = FLT2FIX(1);
26988 18 : p->keySpline.vals[1].y = FLT2FIX(1);
26989 18 : p->keyValueType = 0;
26990 18 : p->offset.x = FLT2FIX(0);
26991 18 : p->offset.y = FLT2FIX(0);
26992 18 : p->offset.z = FLT2FIX(0);
26993 18 : return (GF_Node *)p;
26994 18 : }
26995 :
26996 :
26997 : /*
26998 : PositionAnimator2D Node deletion
26999 : */
27000 :
27001 : static void PositionAnimator2D_Del(GF_Node *node)
27002 : {
27003 36 : M_PositionAnimator2D *p = (M_PositionAnimator2D *) node;
27004 18 : gf_sg_mffloat_del(p->key);
27005 18 : gf_sg_mfvec2f_del(p->keySpline);
27006 18 : gf_sg_mfvec2f_del(p->keyValue);
27007 18 : gf_sg_mffloat_del(p->weight);
27008 18 : gf_node_free((GF_Node *) p);
27009 18 : }
27010 :
27011 : static const u16 PositionAnimator2D_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
27012 : static const u16 PositionAnimator2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
27013 : static const u16 PositionAnimator2D_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
27014 :
27015 : static u32 PositionAnimator2D_get_field_count(GF_Node *node, u8 IndexMode)
27016 : {
27017 68 : switch(IndexMode) {
27018 : case GF_SG_FIELD_CODING_IN:
27019 9 : return 10;
27020 : case GF_SG_FIELD_CODING_DEF:
27021 9 : return 9;
27022 : case GF_SG_FIELD_CODING_OUT:
27023 9 : return 12;
27024 : case GF_SG_FIELD_CODING_DYN:
27025 0 : return 0;
27026 : default:
27027 7 : return 13;
27028 : }
27029 34 : }
27030 :
27031 : static GF_Err PositionAnimator2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
27032 : {
27033 158 : switch(IndexMode) {
27034 : case GF_SG_FIELD_CODING_IN:
27035 7 : *allField = PositionAnimator2D_In2All[inField];
27036 7 : return GF_OK;
27037 : case GF_SG_FIELD_CODING_DEF:
27038 43 : *allField = PositionAnimator2D_Def2All[inField];
27039 43 : return GF_OK;
27040 : case GF_SG_FIELD_CODING_OUT:
27041 29 : *allField = PositionAnimator2D_Out2All[inField];
27042 29 : return GF_OK;
27043 : default:
27044 0 : return GF_BAD_PARAM;
27045 : }
27046 79 : }
27047 : static GF_Err PositionAnimator2D_get_field(GF_Node *node, GF_FieldInfo *info)
27048 : {
27049 562 : switch (info->fieldIndex) {
27050 : case 0:
27051 15 : info->name = "set_fraction";
27052 15 : info->eventType = GF_SG_EVENT_IN;
27053 15 : info->on_event_in = ((M_PositionAnimator2D *)node)->on_set_fraction;
27054 15 : info->fieldType = GF_SG_VRML_SFFLOAT;
27055 15 : info->far_ptr = & ((M_PositionAnimator2D *) node)->set_fraction;
27056 15 : return GF_OK;
27057 : case 1:
27058 18 : info->name = "fromTo";
27059 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27060 18 : info->fieldType = GF_SG_VRML_SFVEC2F;
27061 18 : info->far_ptr = & ((M_PositionAnimator2D *) node)->fromTo;
27062 18 : return GF_OK;
27063 : case 2:
27064 33 : info->name = "key";
27065 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27066 33 : info->fieldType = GF_SG_VRML_MFFLOAT;
27067 33 : info->far_ptr = & ((M_PositionAnimator2D *) node)->key;
27068 33 : return GF_OK;
27069 : case 3:
27070 18 : info->name = "keyOrientation";
27071 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27072 18 : info->fieldType = GF_SG_VRML_SFINT32;
27073 18 : info->far_ptr = & ((M_PositionAnimator2D *) node)->keyOrientation;
27074 18 : return GF_OK;
27075 : case 4:
27076 33 : info->name = "keyType";
27077 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27078 33 : info->fieldType = GF_SG_VRML_SFINT32;
27079 33 : info->far_ptr = & ((M_PositionAnimator2D *) node)->keyType;
27080 33 : return GF_OK;
27081 : case 5:
27082 33 : info->name = "keySpline";
27083 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27084 33 : info->fieldType = GF_SG_VRML_MFVEC2F;
27085 33 : info->far_ptr = & ((M_PositionAnimator2D *) node)->keySpline;
27086 33 : return GF_OK;
27087 : case 6:
27088 33 : info->name = "keyValue";
27089 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27090 33 : info->fieldType = GF_SG_VRML_MFVEC2F;
27091 33 : info->far_ptr = & ((M_PositionAnimator2D *) node)->keyValue;
27092 33 : return GF_OK;
27093 : case 7:
27094 33 : info->name = "keyValueType";
27095 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27096 33 : info->fieldType = GF_SG_VRML_SFINT32;
27097 33 : info->far_ptr = & ((M_PositionAnimator2D *) node)->keyValueType;
27098 33 : return GF_OK;
27099 : case 8:
27100 18 : info->name = "offset";
27101 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27102 18 : info->fieldType = GF_SG_VRML_SFVEC2F;
27103 18 : info->far_ptr = & ((M_PositionAnimator2D *) node)->offset;
27104 18 : return GF_OK;
27105 : case 9:
27106 18 : info->name = "weight";
27107 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27108 18 : info->fieldType = GF_SG_VRML_MFFLOAT;
27109 18 : info->far_ptr = & ((M_PositionAnimator2D *) node)->weight;
27110 18 : return GF_OK;
27111 : case 10:
27112 7 : info->name = "endValue";
27113 7 : info->eventType = GF_SG_EVENT_OUT;
27114 7 : info->fieldType = GF_SG_VRML_SFVEC2F;
27115 7 : info->far_ptr = & ((M_PositionAnimator2D *) node)->endValue;
27116 7 : return GF_OK;
27117 : case 11:
27118 7 : info->name = "rotation_changed";
27119 7 : info->eventType = GF_SG_EVENT_OUT;
27120 7 : info->fieldType = GF_SG_VRML_SFFLOAT;
27121 7 : info->far_ptr = & ((M_PositionAnimator2D *) node)->rotation_changed;
27122 7 : return GF_OK;
27123 : case 12:
27124 15 : info->name = "value_changed";
27125 15 : info->eventType = GF_SG_EVENT_OUT;
27126 15 : info->fieldType = GF_SG_VRML_SFVEC2F;
27127 15 : info->far_ptr = & ((M_PositionAnimator2D *) node)->value_changed;
27128 15 : return GF_OK;
27129 : default:
27130 0 : return GF_BAD_PARAM;
27131 : }
27132 281 : }
27133 :
27134 :
27135 : static s32 PositionAnimator2D_get_field_index_by_name(char *name)
27136 : {
27137 60 : if (!strcmp("set_fraction", name)) return 0;
27138 24 : if (!strcmp("fromTo", name)) return 1;
27139 28 : if (!strcmp("key", name)) return 2;
27140 20 : if (!strcmp("keyOrientation", name)) return 3;
27141 24 : if (!strcmp("keyType", name)) return 4;
27142 20 : if (!strcmp("keySpline", name)) return 5;
27143 16 : if (!strcmp("keyValue", name)) return 6;
27144 12 : if (!strcmp("keyValueType", name)) return 7;
27145 4 : if (!strcmp("offset", name)) return 8;
27146 4 : if (!strcmp("weight", name)) return 9;
27147 4 : if (!strcmp("endValue", name)) return 10;
27148 4 : if (!strcmp("rotation_changed", name)) return 11;
27149 8 : if (!strcmp("value_changed", name)) return 12;
27150 0 : return -1;
27151 28 : }
27152 : static Bool PositionAnimator2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
27153 : {
27154 0 : switch (FieldIndex) {
27155 : case 1:
27156 0 : *AType = 0;
27157 0 : *QType = 8;
27158 0 : return 1;
27159 : case 2:
27160 0 : *AType = 0;
27161 0 : *QType = 8;
27162 0 : return 1;
27163 : case 5:
27164 0 : *AType = 0;
27165 0 : *QType = 8;
27166 0 : return 1;
27167 : case 6:
27168 0 : *AType = 0;
27169 0 : *QType = 4;
27170 0 : return 1;
27171 : case 8:
27172 0 : *AType = 0;
27173 0 : *QType = 2;
27174 0 : *b_min = FIX_MIN;
27175 0 : *b_max = FIX_MAX;
27176 0 : return 1;
27177 : default:
27178 0 : return 0;
27179 : }
27180 0 : }
27181 :
27182 :
27183 :
27184 : GF_Node *PositionAnimator2D_Create()
27185 : {
27186 : M_PositionAnimator2D *p;
27187 54 : GF_SAFEALLOC(p, M_PositionAnimator2D);
27188 18 : if(!p) return NULL;
27189 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionAnimator2D);
27190 :
27191 : /*default field values*/
27192 18 : p->fromTo.x = FLT2FIX(0);
27193 18 : p->fromTo.y = FLT2FIX(1);
27194 18 : p->keyOrientation = 0;
27195 18 : p->keyType = 0;
27196 18 : p->keySpline.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
27197 18 : p->keySpline.count = 2;
27198 18 : p->keySpline.vals[0].x = FLT2FIX(0);
27199 18 : p->keySpline.vals[0].y = FLT2FIX(0);
27200 18 : p->keySpline.vals[1].x = FLT2FIX(1);
27201 18 : p->keySpline.vals[1].y = FLT2FIX(1);
27202 18 : p->keyValueType = 0;
27203 18 : p->offset.x = FLT2FIX(0);
27204 18 : p->offset.y = FLT2FIX(0);
27205 18 : return (GF_Node *)p;
27206 18 : }
27207 :
27208 :
27209 : /*
27210 : PositionInterpolator4D Node deletion
27211 : */
27212 :
27213 : static void PositionInterpolator4D_Del(GF_Node *node)
27214 : {
27215 0 : M_PositionInterpolator4D *p = (M_PositionInterpolator4D *) node;
27216 0 : gf_sg_mffloat_del(p->key);
27217 0 : gf_sg_mfvec4f_del(p->keyValue);
27218 0 : gf_node_free((GF_Node *) p);
27219 0 : }
27220 :
27221 : static const u16 PositionInterpolator4D_Def2All[] = { 1, 2};
27222 : static const u16 PositionInterpolator4D_In2All[] = { 0, 1, 2};
27223 : static const u16 PositionInterpolator4D_Out2All[] = { 1, 2, 3};
27224 :
27225 : static u32 PositionInterpolator4D_get_field_count(GF_Node *node, u8 IndexMode)
27226 : {
27227 0 : switch(IndexMode) {
27228 : case GF_SG_FIELD_CODING_IN:
27229 0 : return 3;
27230 : case GF_SG_FIELD_CODING_DEF:
27231 0 : return 2;
27232 : case GF_SG_FIELD_CODING_OUT:
27233 0 : return 3;
27234 : case GF_SG_FIELD_CODING_DYN:
27235 0 : return 0;
27236 : default:
27237 0 : return 4;
27238 : }
27239 0 : }
27240 :
27241 : static GF_Err PositionInterpolator4D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
27242 : {
27243 0 : switch(IndexMode) {
27244 : case GF_SG_FIELD_CODING_IN:
27245 0 : *allField = PositionInterpolator4D_In2All[inField];
27246 0 : return GF_OK;
27247 : case GF_SG_FIELD_CODING_DEF:
27248 0 : *allField = PositionInterpolator4D_Def2All[inField];
27249 0 : return GF_OK;
27250 : case GF_SG_FIELD_CODING_OUT:
27251 0 : *allField = PositionInterpolator4D_Out2All[inField];
27252 0 : return GF_OK;
27253 : default:
27254 0 : return GF_BAD_PARAM;
27255 : }
27256 0 : }
27257 : static GF_Err PositionInterpolator4D_get_field(GF_Node *node, GF_FieldInfo *info)
27258 : {
27259 0 : switch (info->fieldIndex) {
27260 : case 0:
27261 0 : info->name = "set_fraction";
27262 0 : info->eventType = GF_SG_EVENT_IN;
27263 0 : info->on_event_in = ((M_PositionInterpolator4D *)node)->on_set_fraction;
27264 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
27265 0 : info->far_ptr = & ((M_PositionInterpolator4D *) node)->set_fraction;
27266 0 : return GF_OK;
27267 : case 1:
27268 0 : info->name = "key";
27269 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27270 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
27271 0 : info->far_ptr = & ((M_PositionInterpolator4D *) node)->key;
27272 0 : return GF_OK;
27273 : case 2:
27274 0 : info->name = "keyValue";
27275 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27276 0 : info->fieldType = GF_SG_VRML_MFVEC4F;
27277 0 : info->far_ptr = & ((M_PositionInterpolator4D *) node)->keyValue;
27278 0 : return GF_OK;
27279 : case 3:
27280 0 : info->name = "value_changed";
27281 0 : info->eventType = GF_SG_EVENT_OUT;
27282 0 : info->fieldType = GF_SG_VRML_SFVEC4F;
27283 0 : info->far_ptr = & ((M_PositionInterpolator4D *) node)->value_changed;
27284 0 : return GF_OK;
27285 : default:
27286 0 : return GF_BAD_PARAM;
27287 : }
27288 0 : }
27289 :
27290 :
27291 : static s32 PositionInterpolator4D_get_field_index_by_name(char *name)
27292 : {
27293 0 : if (!strcmp("set_fraction", name)) return 0;
27294 0 : if (!strcmp("key", name)) return 1;
27295 0 : if (!strcmp("keyValue", name)) return 2;
27296 0 : if (!strcmp("value_changed", name)) return 3;
27297 0 : return -1;
27298 0 : }
27299 : static Bool PositionInterpolator4D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
27300 : {
27301 0 : switch (FieldIndex) {
27302 : case 1:
27303 0 : *AType = 0;
27304 0 : *QType = 8;
27305 0 : *b_min = FLT2FIX(0);
27306 0 : *b_max = FLT2FIX(1);
27307 0 : return 1;
27308 : case 2:
27309 0 : *AType = 0;
27310 0 : *QType = 15;
27311 0 : *b_min = FIX_MIN;
27312 0 : *b_max = FIX_MAX;
27313 0 : return 1;
27314 : default:
27315 0 : return 0;
27316 : }
27317 0 : }
27318 :
27319 :
27320 :
27321 : GF_Node *PositionInterpolator4D_Create()
27322 : {
27323 : M_PositionInterpolator4D *p;
27324 0 : GF_SAFEALLOC(p, M_PositionInterpolator4D);
27325 0 : if(!p) return NULL;
27326 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionInterpolator4D);
27327 :
27328 : /*default field values*/
27329 0 : return (GF_Node *)p;
27330 0 : }
27331 :
27332 :
27333 : /*
27334 : ProceduralTexture Node deletion
27335 : */
27336 :
27337 : static void ProceduralTexture_Del(GF_Node *node)
27338 : {
27339 0 : M_ProceduralTexture *p = (M_ProceduralTexture *) node;
27340 0 : gf_sg_mfvec2f_del(p->aWarpmap);
27341 0 : gf_sg_mffloat_del(p->aWeights);
27342 0 : gf_sg_mfvec2f_del(p->bWarpmap);
27343 0 : gf_sg_mffloat_del(p->bWeights);
27344 0 : gf_sg_mfcolor_del(p->color);
27345 0 : gf_sg_mfvec2f_del(p->xWarpmap);
27346 0 : gf_sg_mfvec2f_del(p->yWarpmap);
27347 0 : gf_sg_sfimage_del(p->image_changed);
27348 0 : gf_node_free((GF_Node *) p);
27349 0 : }
27350 :
27351 : static const u16 ProceduralTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
27352 : static const u16 ProceduralTexture_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
27353 : static const u16 ProceduralTexture_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
27354 :
27355 : static u32 ProceduralTexture_get_field_count(GF_Node *node, u8 IndexMode)
27356 : {
27357 0 : switch(IndexMode) {
27358 : case GF_SG_FIELD_CODING_IN:
27359 0 : return 19;
27360 : case GF_SG_FIELD_CODING_DEF:
27361 0 : return 19;
27362 : case GF_SG_FIELD_CODING_OUT:
27363 0 : return 20;
27364 : case GF_SG_FIELD_CODING_DYN:
27365 0 : return 0;
27366 : default:
27367 0 : return 20;
27368 : }
27369 0 : }
27370 :
27371 : static GF_Err ProceduralTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
27372 : {
27373 0 : switch(IndexMode) {
27374 : case GF_SG_FIELD_CODING_IN:
27375 0 : *allField = ProceduralTexture_In2All[inField];
27376 0 : return GF_OK;
27377 : case GF_SG_FIELD_CODING_DEF:
27378 0 : *allField = ProceduralTexture_Def2All[inField];
27379 0 : return GF_OK;
27380 : case GF_SG_FIELD_CODING_OUT:
27381 0 : *allField = ProceduralTexture_Out2All[inField];
27382 0 : return GF_OK;
27383 : default:
27384 0 : return GF_BAD_PARAM;
27385 : }
27386 0 : }
27387 : static GF_Err ProceduralTexture_get_field(GF_Node *node, GF_FieldInfo *info)
27388 : {
27389 0 : switch (info->fieldIndex) {
27390 : case 0:
27391 0 : info->name = "aSmooth";
27392 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27393 0 : info->fieldType = GF_SG_VRML_SFBOOL;
27394 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->aSmooth;
27395 0 : return GF_OK;
27396 : case 1:
27397 0 : info->name = "aWarpmap";
27398 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27399 0 : info->fieldType = GF_SG_VRML_MFVEC2F;
27400 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->aWarpmap;
27401 0 : return GF_OK;
27402 : case 2:
27403 0 : info->name = "aWeights";
27404 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27405 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
27406 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->aWeights;
27407 0 : return GF_OK;
27408 : case 3:
27409 0 : info->name = "bSmooth";
27410 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27411 0 : info->fieldType = GF_SG_VRML_SFBOOL;
27412 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->bSmooth;
27413 0 : return GF_OK;
27414 : case 4:
27415 0 : info->name = "bWarpmap";
27416 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27417 0 : info->fieldType = GF_SG_VRML_MFVEC2F;
27418 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->bWarpmap;
27419 0 : return GF_OK;
27420 : case 5:
27421 0 : info->name = "bWeights";
27422 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27423 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
27424 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->bWeights;
27425 0 : return GF_OK;
27426 : case 6:
27427 0 : info->name = "cellWidth";
27428 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27429 0 : info->fieldType = GF_SG_VRML_SFINT32;
27430 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->cellWidth;
27431 0 : return GF_OK;
27432 : case 7:
27433 0 : info->name = "cellHeight";
27434 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27435 0 : info->fieldType = GF_SG_VRML_SFINT32;
27436 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->cellHeight;
27437 0 : return GF_OK;
27438 : case 8:
27439 0 : info->name = "color";
27440 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27441 0 : info->fieldType = GF_SG_VRML_MFCOLOR;
27442 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->color;
27443 0 : return GF_OK;
27444 : case 9:
27445 0 : info->name = "distortion";
27446 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27447 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
27448 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->distortion;
27449 0 : return GF_OK;
27450 : case 10:
27451 0 : info->name = "height";
27452 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27453 0 : info->fieldType = GF_SG_VRML_SFINT32;
27454 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->height;
27455 0 : return GF_OK;
27456 : case 11:
27457 0 : info->name = "roughness";
27458 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27459 0 : info->fieldType = GF_SG_VRML_SFINT32;
27460 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->roughness;
27461 0 : return GF_OK;
27462 : case 12:
27463 0 : info->name = "seed";
27464 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27465 0 : info->fieldType = GF_SG_VRML_SFINT32;
27466 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->seed;
27467 0 : return GF_OK;
27468 : case 13:
27469 0 : info->name = "type";
27470 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27471 0 : info->fieldType = GF_SG_VRML_SFINT32;
27472 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->type;
27473 0 : return GF_OK;
27474 : case 14:
27475 0 : info->name = "xSmooth";
27476 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27477 0 : info->fieldType = GF_SG_VRML_SFBOOL;
27478 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->xSmooth;
27479 0 : return GF_OK;
27480 : case 15:
27481 0 : info->name = "xWarpmap";
27482 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27483 0 : info->fieldType = GF_SG_VRML_MFVEC2F;
27484 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->xWarpmap;
27485 0 : return GF_OK;
27486 : case 16:
27487 0 : info->name = "ySmooth";
27488 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27489 0 : info->fieldType = GF_SG_VRML_SFBOOL;
27490 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->ySmooth;
27491 0 : return GF_OK;
27492 : case 17:
27493 0 : info->name = "yWarpmap";
27494 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27495 0 : info->fieldType = GF_SG_VRML_MFVEC2F;
27496 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->yWarpmap;
27497 0 : return GF_OK;
27498 : case 18:
27499 0 : info->name = "width";
27500 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27501 0 : info->fieldType = GF_SG_VRML_SFINT32;
27502 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->width;
27503 0 : return GF_OK;
27504 : case 19:
27505 0 : info->name = "image_changed";
27506 0 : info->eventType = GF_SG_EVENT_OUT;
27507 0 : info->fieldType = GF_SG_VRML_SFIMAGE;
27508 0 : info->far_ptr = & ((M_ProceduralTexture *) node)->image_changed;
27509 0 : return GF_OK;
27510 : default:
27511 0 : return GF_BAD_PARAM;
27512 : }
27513 0 : }
27514 :
27515 :
27516 : static s32 ProceduralTexture_get_field_index_by_name(char *name)
27517 : {
27518 0 : if (!strcmp("aSmooth", name)) return 0;
27519 0 : if (!strcmp("aWarpmap", name)) return 1;
27520 0 : if (!strcmp("aWeights", name)) return 2;
27521 0 : if (!strcmp("bSmooth", name)) return 3;
27522 0 : if (!strcmp("bWarpmap", name)) return 4;
27523 0 : if (!strcmp("bWeights", name)) return 5;
27524 0 : if (!strcmp("cellWidth", name)) return 6;
27525 0 : if (!strcmp("cellHeight", name)) return 7;
27526 0 : if (!strcmp("color", name)) return 8;
27527 0 : if (!strcmp("distortion", name)) return 9;
27528 0 : if (!strcmp("height", name)) return 10;
27529 0 : if (!strcmp("roughness", name)) return 11;
27530 0 : if (!strcmp("seed", name)) return 12;
27531 0 : if (!strcmp("type", name)) return 13;
27532 0 : if (!strcmp("xSmooth", name)) return 14;
27533 0 : if (!strcmp("xWarpmap", name)) return 15;
27534 0 : if (!strcmp("ySmooth", name)) return 16;
27535 0 : if (!strcmp("yWarpmap", name)) return 17;
27536 0 : if (!strcmp("width", name)) return 18;
27537 0 : if (!strcmp("image_changed", name)) return 19;
27538 0 : return -1;
27539 0 : }
27540 : static Bool ProceduralTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
27541 : {
27542 0 : switch (FieldIndex) {
27543 : case 1:
27544 0 : *AType = 0;
27545 0 : *QType = 2;
27546 0 : *b_min = FLT2FIX(0);
27547 0 : *b_max = FLT2FIX(1);
27548 0 : return 1;
27549 : case 4:
27550 0 : *AType = 0;
27551 0 : *QType = 2;
27552 0 : *b_min = FLT2FIX(0);
27553 0 : *b_max = FLT2FIX( 1);
27554 0 : return 1;
27555 : case 6:
27556 0 : *AType = 0;
27557 0 : *QType = 13;
27558 0 : *QT13_bits = 4;
27559 0 : *b_min = FLT2FIX(0);
27560 0 : *b_max = FLT2FIX(15);
27561 0 : return 1;
27562 : case 7:
27563 0 : *AType = 0;
27564 0 : *QType = 13;
27565 0 : *QT13_bits = 4;
27566 0 : *b_min = FLT2FIX(0);
27567 0 : *b_max = FLT2FIX(15);
27568 0 : return 1;
27569 : case 8:
27570 0 : *AType = 0;
27571 0 : *QType = 4;
27572 0 : return 1;
27573 : case 9:
27574 0 : *AType = 0;
27575 0 : *QType = 13;
27576 0 : *QT13_bits = 16;
27577 0 : *b_min = FLT2FIX(0);
27578 0 : *b_max = FLT2FIX(1);
27579 0 : return 1;
27580 : case 10:
27581 0 : *AType = 0;
27582 0 : *QType = 13;
27583 0 : *QT13_bits = 4;
27584 0 : *b_min = FLT2FIX(1);
27585 0 : *b_max = FLT2FIX(15);
27586 0 : return 1;
27587 : case 11:
27588 0 : *AType = 0;
27589 0 : *QType = 13;
27590 0 : *QT13_bits = 4;
27591 0 : *b_min = FLT2FIX(0);
27592 0 : *b_max = FLT2FIX(15);
27593 0 : return 1;
27594 : case 13:
27595 0 : *AType = 0;
27596 0 : *QType = 13;
27597 0 : *QT13_bits = 3;
27598 0 : *b_min = FLT2FIX(0);
27599 0 : *b_max = FLT2FIX(4);
27600 0 : return 1;
27601 : case 15:
27602 0 : *AType = 0;
27603 0 : *QType = 2;
27604 0 : *b_min = FLT2FIX(0);
27605 0 : *b_max = FLT2FIX(1);
27606 0 : return 1;
27607 : case 17:
27608 0 : *AType = 0;
27609 0 : *QType = 2;
27610 0 : *b_min = FLT2FIX(0);
27611 0 : *b_max = FLT2FIX(1);
27612 0 : return 1;
27613 : case 18:
27614 0 : *AType = 0;
27615 0 : *QType = 13;
27616 0 : *QT13_bits = 4;
27617 0 : *b_min = FLT2FIX(1);
27618 0 : *b_max = FLT2FIX(15);
27619 0 : return 1;
27620 : default:
27621 0 : return 0;
27622 : }
27623 0 : }
27624 :
27625 :
27626 :
27627 : GF_Node *ProceduralTexture_Create()
27628 : {
27629 : M_ProceduralTexture *p;
27630 0 : GF_SAFEALLOC(p, M_ProceduralTexture);
27631 0 : if(!p) return NULL;
27632 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ProceduralTexture);
27633 :
27634 : /*default field values*/
27635 0 : p->aWarpmap.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
27636 0 : p->aWarpmap.count = 2;
27637 0 : p->aWarpmap.vals[0].x = FLT2FIX(0);
27638 0 : p->aWarpmap.vals[0].y = FLT2FIX(0);
27639 0 : p->aWarpmap.vals[1].x = FLT2FIX(1);
27640 0 : p->aWarpmap.vals[1].y = FLT2FIX(1);
27641 0 : p->aWeights.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*16);
27642 0 : p->aWeights.count = 16;
27643 0 : p->aWeights.vals[0] = FLT2FIX(0);
27644 0 : p->aWeights.vals[1] = FLT2FIX(0);
27645 0 : p->aWeights.vals[2] = FLT2FIX(0);
27646 0 : p->aWeights.vals[3] = FLT2FIX(0);
27647 0 : p->aWeights.vals[4] = FLT2FIX(0);
27648 0 : p->aWeights.vals[5] = FLT2FIX(0);
27649 0 : p->aWeights.vals[6] = FLT2FIX(0);
27650 0 : p->aWeights.vals[7] = FLT2FIX(0);
27651 0 : p->aWeights.vals[8] = FLT2FIX(0);
27652 0 : p->aWeights.vals[9] = FLT2FIX(0);
27653 0 : p->aWeights.vals[10] = FLT2FIX(0);
27654 0 : p->aWeights.vals[11] = FLT2FIX(0);
27655 0 : p->aWeights.vals[12] = FLT2FIX(1);
27656 0 : p->aWeights.vals[13] = FLT2FIX(0);
27657 0 : p->aWeights.vals[14] = FLT2FIX(0);
27658 0 : p->aWeights.vals[15] = FLT2FIX(0);
27659 0 : p->bWarpmap.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
27660 0 : p->bWarpmap.count = 2;
27661 0 : p->bWarpmap.vals[0].x = FLT2FIX(0);
27662 0 : p->bWarpmap.vals[0].y = FLT2FIX(0);
27663 0 : p->bWarpmap.vals[1].x = FLT2FIX(1);
27664 0 : p->bWarpmap.vals[1].y = FLT2FIX(1);
27665 0 : p->bWeights.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*16);
27666 0 : p->bWeights.count = 16;
27667 0 : p->bWeights.vals[0] = FLT2FIX(0);
27668 0 : p->bWeights.vals[1] = FLT2FIX(0);
27669 0 : p->bWeights.vals[2] = FLT2FIX(0);
27670 0 : p->bWeights.vals[3] = FLT2FIX(0);
27671 0 : p->bWeights.vals[4] = FLT2FIX(0);
27672 0 : p->bWeights.vals[5] = FLT2FIX(1);
27673 0 : p->bWeights.vals[6] = FLT2FIX(0);
27674 0 : p->bWeights.vals[7] = FLT2FIX(0);
27675 0 : p->bWeights.vals[8] = FLT2FIX(0);
27676 0 : p->bWeights.vals[9] = FLT2FIX(0);
27677 0 : p->bWeights.vals[10] = FLT2FIX(0);
27678 0 : p->bWeights.vals[11] = FLT2FIX(0);
27679 0 : p->bWeights.vals[12] = FLT2FIX(0);
27680 0 : p->bWeights.vals[13] = FLT2FIX(0);
27681 0 : p->bWeights.vals[14] = FLT2FIX(0);
27682 0 : p->bWeights.vals[15] = FLT2FIX(0);
27683 0 : p->cellWidth = 4;
27684 0 : p->cellHeight = 4;
27685 0 : p->color.vals = (SFColor*)gf_malloc(sizeof(SFColor)*4);
27686 0 : p->color.count = 4;
27687 0 : p->color.vals[0].red = FLT2FIX(0.3);
27688 0 : p->color.vals[0].green = FLT2FIX(0.698);
27689 0 : p->color.vals[0].blue = FLT2FIX(1);
27690 0 : p->color.vals[1].red = FLT2FIX(0.8);
27691 0 : p->color.vals[1].green = FLT2FIX(0.8);
27692 0 : p->color.vals[1].blue = FLT2FIX(0.8);
27693 0 : p->color.vals[2].red = FLT2FIX(1);
27694 0 : p->color.vals[2].green = FLT2FIX(1);
27695 0 : p->color.vals[2].blue = FLT2FIX(1);
27696 0 : p->color.vals[3].red = FLT2FIX(0);
27697 0 : p->color.vals[3].green = FLT2FIX(0);
27698 0 : p->color.vals[3].blue = FLT2FIX(0);
27699 0 : p->distortion = FLT2FIX(0);
27700 0 : p->height = 7;
27701 0 : p->roughness = 0;
27702 0 : p->seed = 129093;
27703 0 : p->type = 0;
27704 0 : p->width = 7;
27705 0 : return (GF_Node *)p;
27706 0 : }
27707 :
27708 :
27709 : /*
27710 : Quadric Node deletion
27711 : */
27712 :
27713 : static void Quadric_Del(GF_Node *node)
27714 : {
27715 0 : M_Quadric *p = (M_Quadric *) node;
27716 0 : gf_sg_mfint32_del(p->densities);
27717 0 : gf_node_free((GF_Node *) p);
27718 0 : }
27719 :
27720 : static const u16 Quadric_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
27721 : static const u16 Quadric_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
27722 : static const u16 Quadric_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
27723 : static const u16 Quadric_Dyn2All[] = { 0, 3, 4, 5, 6, 7, 8};
27724 :
27725 : static u32 Quadric_get_field_count(GF_Node *node, u8 IndexMode)
27726 : {
27727 0 : switch(IndexMode) {
27728 : case GF_SG_FIELD_CODING_IN:
27729 0 : return 10;
27730 : case GF_SG_FIELD_CODING_DEF:
27731 0 : return 10;
27732 : case GF_SG_FIELD_CODING_OUT:
27733 0 : return 10;
27734 : case GF_SG_FIELD_CODING_DYN:
27735 0 : return 7;
27736 : default:
27737 0 : return 10;
27738 : }
27739 0 : }
27740 :
27741 : static GF_Err Quadric_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
27742 : {
27743 0 : switch(IndexMode) {
27744 : case GF_SG_FIELD_CODING_IN:
27745 0 : *allField = Quadric_In2All[inField];
27746 0 : return GF_OK;
27747 : case GF_SG_FIELD_CODING_DEF:
27748 0 : *allField = Quadric_Def2All[inField];
27749 0 : return GF_OK;
27750 : case GF_SG_FIELD_CODING_OUT:
27751 0 : *allField = Quadric_Out2All[inField];
27752 0 : return GF_OK;
27753 : case GF_SG_FIELD_CODING_DYN:
27754 0 : *allField = Quadric_Dyn2All[inField];
27755 0 : return GF_OK;
27756 : default:
27757 0 : return GF_BAD_PARAM;
27758 : }
27759 0 : }
27760 : static GF_Err Quadric_get_field(GF_Node *node, GF_FieldInfo *info)
27761 : {
27762 0 : switch (info->fieldIndex) {
27763 : case 0:
27764 0 : info->name = "bboxSize";
27765 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27766 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
27767 0 : info->far_ptr = & ((M_Quadric *) node)->bboxSize;
27768 0 : return GF_OK;
27769 : case 1:
27770 0 : info->name = "densities";
27771 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27772 0 : info->fieldType = GF_SG_VRML_MFINT32;
27773 0 : info->far_ptr = & ((M_Quadric *) node)->densities;
27774 0 : return GF_OK;
27775 : case 2:
27776 0 : info->name = "dual";
27777 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27778 0 : info->fieldType = GF_SG_VRML_SFBOOL;
27779 0 : info->far_ptr = & ((M_Quadric *) node)->dual;
27780 0 : return GF_OK;
27781 : case 3:
27782 0 : info->name = "P0";
27783 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27784 0 : info->fieldType = GF_SG_VRML_SFVEC4F;
27785 0 : info->far_ptr = & ((M_Quadric *) node)->P0;
27786 0 : return GF_OK;
27787 : case 4:
27788 0 : info->name = "P1";
27789 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27790 0 : info->fieldType = GF_SG_VRML_SFVEC4F;
27791 0 : info->far_ptr = & ((M_Quadric *) node)->P1;
27792 0 : return GF_OK;
27793 : case 5:
27794 0 : info->name = "P2";
27795 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27796 0 : info->fieldType = GF_SG_VRML_SFVEC4F;
27797 0 : info->far_ptr = & ((M_Quadric *) node)->P2;
27798 0 : return GF_OK;
27799 : case 6:
27800 0 : info->name = "P3";
27801 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27802 0 : info->fieldType = GF_SG_VRML_SFVEC4F;
27803 0 : info->far_ptr = & ((M_Quadric *) node)->P3;
27804 0 : return GF_OK;
27805 : case 7:
27806 0 : info->name = "P4";
27807 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27808 0 : info->fieldType = GF_SG_VRML_SFVEC4F;
27809 0 : info->far_ptr = & ((M_Quadric *) node)->P4;
27810 0 : return GF_OK;
27811 : case 8:
27812 0 : info->name = "P5";
27813 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27814 0 : info->fieldType = GF_SG_VRML_SFVEC4F;
27815 0 : info->far_ptr = & ((M_Quadric *) node)->P5;
27816 0 : return GF_OK;
27817 : case 9:
27818 0 : info->name = "solid";
27819 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27820 0 : info->fieldType = GF_SG_VRML_SFBOOL;
27821 0 : info->far_ptr = & ((M_Quadric *) node)->solid;
27822 0 : return GF_OK;
27823 : default:
27824 0 : return GF_BAD_PARAM;
27825 : }
27826 0 : }
27827 :
27828 :
27829 : static s32 Quadric_get_field_index_by_name(char *name)
27830 : {
27831 0 : if (!strcmp("bboxSize", name)) return 0;
27832 0 : if (!strcmp("densities", name)) return 1;
27833 0 : if (!strcmp("dual", name)) return 2;
27834 0 : if (!strcmp("P0", name)) return 3;
27835 0 : if (!strcmp("P1", name)) return 4;
27836 0 : if (!strcmp("P2", name)) return 5;
27837 0 : if (!strcmp("P3", name)) return 6;
27838 0 : if (!strcmp("P4", name)) return 7;
27839 0 : if (!strcmp("P5", name)) return 8;
27840 0 : if (!strcmp("solid", name)) return 9;
27841 0 : return -1;
27842 0 : }
27843 : static Bool Quadric_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
27844 : {
27845 0 : switch (FieldIndex) {
27846 : case 0:
27847 0 : *AType = 11;
27848 0 : *QType = 11;
27849 0 : *b_min = FLT2FIX(0);
27850 0 : *b_max = FIX_MAX;
27851 0 : return 1;
27852 : case 3:
27853 0 : *AType = 15;
27854 0 : *QType = 15;
27855 0 : *b_min = FIX_MIN;
27856 0 : *b_max = FIX_MAX;
27857 0 : return 1;
27858 : case 4:
27859 0 : *AType = 15;
27860 0 : *QType = 15;
27861 0 : *b_min = FIX_MIN;
27862 0 : *b_max = FIX_MAX;
27863 0 : return 1;
27864 : case 5:
27865 0 : *AType = 15;
27866 0 : *QType = 15;
27867 0 : *b_min = FIX_MIN;
27868 0 : *b_max = FIX_MAX;
27869 0 : return 1;
27870 : case 6:
27871 0 : *AType = 15;
27872 0 : *QType = 15;
27873 0 : *b_min = FIX_MIN;
27874 0 : *b_max = FIX_MAX;
27875 0 : return 1;
27876 : case 7:
27877 0 : *AType = 15;
27878 0 : *QType = 15;
27879 0 : *b_min = FIX_MIN;
27880 0 : *b_max = FIX_MAX;
27881 0 : return 1;
27882 : case 8:
27883 0 : *AType = 15;
27884 0 : *QType = 15;
27885 0 : *b_min = FIX_MIN;
27886 0 : *b_max = FIX_MAX;
27887 0 : return 1;
27888 : default:
27889 0 : return 0;
27890 : }
27891 0 : }
27892 :
27893 :
27894 :
27895 : GF_Node *Quadric_Create()
27896 : {
27897 : M_Quadric *p;
27898 0 : GF_SAFEALLOC(p, M_Quadric);
27899 0 : if(!p) return NULL;
27900 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Quadric);
27901 :
27902 : /*default field values*/
27903 0 : p->bboxSize.x = FLT2FIX(2);
27904 0 : p->bboxSize.y = FLT2FIX(2);
27905 0 : p->bboxSize.z = FLT2FIX(2);
27906 0 : p->P0.x = FLT2FIX(-1);
27907 0 : p->P0.y = FLT2FIX(0);
27908 0 : p->P0.z = FLT2FIX(0);
27909 0 : p->P0.q = FLT2FIX(1);
27910 0 : p->P1.x = FLT2FIX(1);
27911 0 : p->P1.y = FLT2FIX(0);
27912 0 : p->P1.z = FLT2FIX(0);
27913 0 : p->P1.q = FLT2FIX(1);
27914 0 : p->P2.x = FLT2FIX(0);
27915 0 : p->P2.y = FLT2FIX(1);
27916 0 : p->P2.z = FLT2FIX(0);
27917 0 : p->P2.q = FLT2FIX(0);
27918 0 : p->P3.x = FLT2FIX(0);
27919 0 : p->P3.y = FLT2FIX(0);
27920 0 : p->P3.z = FLT2FIX(1);
27921 0 : p->P3.q = FLT2FIX(0);
27922 0 : p->P4.x = FLT2FIX(0);
27923 0 : p->P4.y = FLT2FIX(1);
27924 0 : p->P4.z = FLT2FIX(0);
27925 0 : p->P4.q = FLT2FIX(1);
27926 0 : p->P5.x = FLT2FIX(0);
27927 0 : p->P5.y = FLT2FIX(0);
27928 0 : p->P5.z = FLT2FIX(1);
27929 0 : p->P5.q = FLT2FIX(1);
27930 0 : return (GF_Node *)p;
27931 0 : }
27932 :
27933 :
27934 : /*
27935 : SBBone Node deletion
27936 : */
27937 :
27938 : static void SBBone_Del(GF_Node *node)
27939 : {
27940 0 : M_SBBone *p = (M_SBBone *) node;
27941 0 : gf_sg_mffloat_del(p->ikPitchLimit);
27942 0 : gf_sg_mffloat_del(p->ikRollLimit);
27943 0 : gf_sg_mffloat_del(p->ikTxLimit);
27944 0 : gf_sg_mffloat_del(p->ikTyLimit);
27945 0 : gf_sg_mffloat_del(p->ikTzLimit);
27946 0 : gf_sg_mffloat_del(p->ikYawLimit);
27947 0 : gf_sg_mffloat_del(p->sectionInner);
27948 0 : gf_sg_mffloat_del(p->sectionOuter);
27949 0 : gf_sg_mffloat_del(p->sectionPosition);
27950 0 : gf_sg_mfint32_del(p->skinCoordIndex);
27951 0 : gf_sg_mffloat_del(p->skinCoordWeight);
27952 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
27953 0 : gf_node_free((GF_Node *) p);
27954 0 : }
27955 :
27956 : static const u16 SBBone_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};
27957 : static const u16 SBBone_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};
27958 : static const u16 SBBone_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};
27959 : static const u16 SBBone_Dyn2All[] = { 3, 5, 14, 16, 17, 23};
27960 :
27961 : static u32 SBBone_get_field_count(GF_Node *node, u8 IndexMode)
27962 : {
27963 0 : switch(IndexMode) {
27964 : case GF_SG_FIELD_CODING_IN:
27965 0 : return 24;
27966 : case GF_SG_FIELD_CODING_DEF:
27967 0 : return 22;
27968 : case GF_SG_FIELD_CODING_OUT:
27969 0 : return 22;
27970 : case GF_SG_FIELD_CODING_DYN:
27971 0 : return 6;
27972 : default:
27973 0 : return 24;
27974 : }
27975 0 : }
27976 :
27977 : static GF_Err SBBone_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
27978 : {
27979 0 : switch(IndexMode) {
27980 : case GF_SG_FIELD_CODING_IN:
27981 0 : *allField = SBBone_In2All[inField];
27982 0 : return GF_OK;
27983 : case GF_SG_FIELD_CODING_DEF:
27984 0 : *allField = SBBone_Def2All[inField];
27985 0 : return GF_OK;
27986 : case GF_SG_FIELD_CODING_OUT:
27987 0 : *allField = SBBone_Out2All[inField];
27988 0 : return GF_OK;
27989 : case GF_SG_FIELD_CODING_DYN:
27990 0 : *allField = SBBone_Dyn2All[inField];
27991 0 : return GF_OK;
27992 : default:
27993 0 : return GF_BAD_PARAM;
27994 : }
27995 0 : }
27996 : static GF_Err SBBone_get_field(GF_Node *node, GF_FieldInfo *info)
27997 : {
27998 0 : switch (info->fieldIndex) {
27999 : case 0:
28000 0 : info->name = "addChildren";
28001 0 : info->eventType = GF_SG_EVENT_IN;
28002 0 : info->on_event_in = ((M_SBBone *)node)->on_addChildren;
28003 0 : info->fieldType = GF_SG_VRML_SFNODE;
28004 0 : info->NDTtype = NDT_SF3DNode;
28005 0 : info->far_ptr = & ((M_SBBone *)node)->addChildren;
28006 0 : return GF_OK;
28007 : case 1:
28008 0 : info->name = "removeChildren";
28009 0 : info->eventType = GF_SG_EVENT_IN;
28010 0 : info->on_event_in = ((M_SBBone *)node)->on_removeChildren;
28011 0 : info->fieldType = GF_SG_VRML_SFNODE;
28012 0 : info->NDTtype = NDT_SF3DNode;
28013 0 : info->far_ptr = & ((M_SBBone *)node)->removeChildren;
28014 0 : return GF_OK;
28015 : case 2:
28016 0 : info->name = "boneID";
28017 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28018 0 : info->fieldType = GF_SG_VRML_SFINT32;
28019 0 : info->far_ptr = & ((M_SBBone *) node)->boneID;
28020 0 : return GF_OK;
28021 : case 3:
28022 0 : info->name = "center";
28023 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28024 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
28025 0 : info->far_ptr = & ((M_SBBone *) node)->center;
28026 0 : return GF_OK;
28027 : case 4:
28028 0 : info->name = "children";
28029 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28030 0 : info->fieldType = GF_SG_VRML_MFNODE;
28031 0 : info->NDTtype = NDT_SF3DNode;
28032 0 : info->far_ptr = & ((M_SBBone *)node)->children;
28033 0 : return GF_OK;
28034 : case 5:
28035 0 : info->name = "endpoint";
28036 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28037 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
28038 0 : info->far_ptr = & ((M_SBBone *) node)->endpoint;
28039 0 : return GF_OK;
28040 : case 6:
28041 0 : info->name = "falloff";
28042 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28043 0 : info->fieldType = GF_SG_VRML_SFINT32;
28044 0 : info->far_ptr = & ((M_SBBone *) node)->falloff;
28045 0 : return GF_OK;
28046 : case 7:
28047 0 : info->name = "ikChainPosition";
28048 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28049 0 : info->fieldType = GF_SG_VRML_SFINT32;
28050 0 : info->far_ptr = & ((M_SBBone *) node)->ikChainPosition;
28051 0 : return GF_OK;
28052 : case 8:
28053 0 : info->name = "ikPitchLimit";
28054 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28055 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
28056 0 : info->far_ptr = & ((M_SBBone *) node)->ikPitchLimit;
28057 0 : return GF_OK;
28058 : case 9:
28059 0 : info->name = "ikRollLimit";
28060 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28061 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
28062 0 : info->far_ptr = & ((M_SBBone *) node)->ikRollLimit;
28063 0 : return GF_OK;
28064 : case 10:
28065 0 : info->name = "ikTxLimit";
28066 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28067 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
28068 0 : info->far_ptr = & ((M_SBBone *) node)->ikTxLimit;
28069 0 : return GF_OK;
28070 : case 11:
28071 0 : info->name = "ikTyLimit";
28072 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28073 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
28074 0 : info->far_ptr = & ((M_SBBone *) node)->ikTyLimit;
28075 0 : return GF_OK;
28076 : case 12:
28077 0 : info->name = "ikTzLimit";
28078 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28079 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
28080 0 : info->far_ptr = & ((M_SBBone *) node)->ikTzLimit;
28081 0 : return GF_OK;
28082 : case 13:
28083 0 : info->name = "ikYawLimit";
28084 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28085 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
28086 0 : info->far_ptr = & ((M_SBBone *) node)->ikYawLimit;
28087 0 : return GF_OK;
28088 : case 14:
28089 0 : info->name = "rotation";
28090 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28091 0 : info->fieldType = GF_SG_VRML_SFROTATION;
28092 0 : info->far_ptr = & ((M_SBBone *) node)->rotation;
28093 0 : return GF_OK;
28094 : case 15:
28095 0 : info->name = "rotationOrder";
28096 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28097 0 : info->fieldType = GF_SG_VRML_SFINT32;
28098 0 : info->far_ptr = & ((M_SBBone *) node)->rotationOrder;
28099 0 : return GF_OK;
28100 : case 16:
28101 0 : info->name = "scale";
28102 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28103 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
28104 0 : info->far_ptr = & ((M_SBBone *) node)->scale;
28105 0 : return GF_OK;
28106 : case 17:
28107 0 : info->name = "scaleOrientation";
28108 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28109 0 : info->fieldType = GF_SG_VRML_SFROTATION;
28110 0 : info->far_ptr = & ((M_SBBone *) node)->scaleOrientation;
28111 0 : return GF_OK;
28112 : case 18:
28113 0 : info->name = "sectionInner";
28114 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28115 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
28116 0 : info->far_ptr = & ((M_SBBone *) node)->sectionInner;
28117 0 : return GF_OK;
28118 : case 19:
28119 0 : info->name = "sectionOuter";
28120 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28121 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
28122 0 : info->far_ptr = & ((M_SBBone *) node)->sectionOuter;
28123 0 : return GF_OK;
28124 : case 20:
28125 0 : info->name = "sectionPosition";
28126 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28127 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
28128 0 : info->far_ptr = & ((M_SBBone *) node)->sectionPosition;
28129 0 : return GF_OK;
28130 : case 21:
28131 0 : info->name = "skinCoordIndex";
28132 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28133 0 : info->fieldType = GF_SG_VRML_MFINT32;
28134 0 : info->far_ptr = & ((M_SBBone *) node)->skinCoordIndex;
28135 0 : return GF_OK;
28136 : case 22:
28137 0 : info->name = "skinCoordWeight";
28138 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28139 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
28140 0 : info->far_ptr = & ((M_SBBone *) node)->skinCoordWeight;
28141 0 : return GF_OK;
28142 : case 23:
28143 0 : info->name = "translation";
28144 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28145 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
28146 0 : info->far_ptr = & ((M_SBBone *) node)->translation;
28147 0 : return GF_OK;
28148 : default:
28149 0 : return GF_BAD_PARAM;
28150 : }
28151 0 : }
28152 :
28153 :
28154 : static s32 SBBone_get_field_index_by_name(char *name)
28155 : {
28156 0 : if (!strcmp("addChildren", name)) return 0;
28157 0 : if (!strcmp("removeChildren", name)) return 1;
28158 0 : if (!strcmp("boneID", name)) return 2;
28159 0 : if (!strcmp("center", name)) return 3;
28160 0 : if (!strcmp("children", name)) return 4;
28161 0 : if (!strcmp("endpoint", name)) return 5;
28162 0 : if (!strcmp("falloff", name)) return 6;
28163 0 : if (!strcmp("ikChainPosition", name)) return 7;
28164 0 : if (!strcmp("ikPitchLimit", name)) return 8;
28165 0 : if (!strcmp("ikRollLimit", name)) return 9;
28166 0 : if (!strcmp("ikTxLimit", name)) return 10;
28167 0 : if (!strcmp("ikTyLimit", name)) return 11;
28168 0 : if (!strcmp("ikTzLimit", name)) return 12;
28169 0 : if (!strcmp("ikYawLimit", name)) return 13;
28170 0 : if (!strcmp("rotation", name)) return 14;
28171 0 : if (!strcmp("rotationOrder", name)) return 15;
28172 0 : if (!strcmp("scale", name)) return 16;
28173 0 : if (!strcmp("scaleOrientation", name)) return 17;
28174 0 : if (!strcmp("sectionInner", name)) return 18;
28175 0 : if (!strcmp("sectionOuter", name)) return 19;
28176 0 : if (!strcmp("sectionPosition", name)) return 20;
28177 0 : if (!strcmp("skinCoordIndex", name)) return 21;
28178 0 : if (!strcmp("skinCoordWeight", name)) return 22;
28179 0 : if (!strcmp("translation", name)) return 23;
28180 0 : return -1;
28181 0 : }
28182 : static Bool SBBone_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
28183 : {
28184 0 : switch (FieldIndex) {
28185 : case 2:
28186 0 : *AType = 0;
28187 0 : *QType = 13;
28188 0 : *QT13_bits = 10;
28189 0 : *b_min = FLT2FIX(0);
28190 0 : *b_max = FLT2FIX(1023);
28191 0 : return 1;
28192 : case 3:
28193 0 : *AType = 1;
28194 0 : *QType = 1;
28195 0 : return 1;
28196 : case 5:
28197 0 : *AType = 1;
28198 0 : *QType = 1;
28199 0 : return 1;
28200 : case 6:
28201 0 : *AType = 0;
28202 0 : *QType = 13;
28203 0 : *QT13_bits = 3;
28204 0 : *b_min = FLT2FIX(-1);
28205 0 : *b_max = FLT2FIX(4);
28206 0 : return 1;
28207 : case 7:
28208 0 : *AType = 0;
28209 0 : *QType = 13;
28210 0 : *QT13_bits = 2;
28211 0 : *b_min = FLT2FIX(0);
28212 0 : *b_max = FLT2FIX(3);
28213 0 : return 1;
28214 : case 14:
28215 0 : *AType = 10;
28216 0 : *QType = 10;
28217 0 : return 1;
28218 : case 15:
28219 0 : *AType = 0;
28220 0 : *QType = 13;
28221 0 : *QT13_bits = 5;
28222 0 : *b_min = FLT2FIX(0);
28223 0 : *b_max = FLT2FIX(23);
28224 0 : return 1;
28225 : case 16:
28226 0 : *AType = 11;
28227 0 : *QType = 7;
28228 0 : return 1;
28229 : case 17:
28230 0 : *AType = 10;
28231 0 : *QType = 10;
28232 0 : return 1;
28233 : case 21:
28234 0 : *AType = 0;
28235 0 : *QType = 14;
28236 0 : return 1;
28237 : case 23:
28238 0 : *AType = 1;
28239 0 : *QType = 1;
28240 0 : return 1;
28241 : default:
28242 0 : return 0;
28243 : }
28244 0 : }
28245 :
28246 :
28247 :
28248 : GF_Node *SBBone_Create()
28249 : {
28250 : M_SBBone *p;
28251 0 : GF_SAFEALLOC(p, M_SBBone);
28252 0 : if(!p) return NULL;
28253 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SBBone);
28254 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
28255 :
28256 : /*default field values*/
28257 0 : p->boneID = 0;
28258 0 : p->center.x = FLT2FIX(0);
28259 0 : p->center.y = FLT2FIX(0);
28260 0 : p->center.z = FLT2FIX(0);
28261 0 : p->endpoint.x = FLT2FIX(0);
28262 0 : p->endpoint.y = FLT2FIX(0);
28263 0 : p->endpoint.z = FLT2FIX(1);
28264 0 : p->falloff = 1;
28265 0 : p->ikChainPosition = 0;
28266 0 : p->rotation.x = FLT2FIX(0);
28267 0 : p->rotation.y = FLT2FIX(0);
28268 0 : p->rotation.z = FLT2FIX(1);
28269 0 : p->rotation.q = FLT2FIX(0);
28270 0 : p->rotationOrder = 0;
28271 0 : p->scale.x = FLT2FIX(0);
28272 0 : p->scale.y = FLT2FIX(0);
28273 0 : p->scale.z = FLT2FIX(0);
28274 0 : p->scaleOrientation.x = FLT2FIX(0);
28275 0 : p->scaleOrientation.y = FLT2FIX(0);
28276 0 : p->scaleOrientation.z = FLT2FIX(1);
28277 0 : p->scaleOrientation.q = FLT2FIX(0);
28278 0 : p->translation.x = FLT2FIX(0);
28279 0 : p->translation.y = FLT2FIX(0);
28280 0 : p->translation.z = FLT2FIX(0);
28281 0 : return (GF_Node *)p;
28282 0 : }
28283 :
28284 :
28285 : /*
28286 : SBMuscle Node deletion
28287 : */
28288 :
28289 : static void SBMuscle_Del(GF_Node *node)
28290 : {
28291 0 : M_SBMuscle *p = (M_SBMuscle *) node;
28292 0 : gf_node_unregister((GF_Node *) p->muscleCurve, (GF_Node *) p);
28293 0 : gf_sg_mfint32_del(p->skinCoordIndex);
28294 0 : gf_sg_mffloat_del(p->skinCoordWeight);
28295 0 : gf_node_free((GF_Node *) p);
28296 0 : }
28297 :
28298 : static const u16 SBMuscle_Def2All[] = { 0, 1, 2, 3, 4, 5};
28299 : static const u16 SBMuscle_In2All[] = { 0, 1, 2, 3, 4, 5};
28300 : static const u16 SBMuscle_Out2All[] = { 0, 1, 2, 3, 4, 5};
28301 : static const u16 SBMuscle_Dyn2All[] = { 3};
28302 :
28303 : static u32 SBMuscle_get_field_count(GF_Node *node, u8 IndexMode)
28304 : {
28305 0 : switch(IndexMode) {
28306 : case GF_SG_FIELD_CODING_IN:
28307 0 : return 6;
28308 : case GF_SG_FIELD_CODING_DEF:
28309 0 : return 6;
28310 : case GF_SG_FIELD_CODING_OUT:
28311 0 : return 6;
28312 : case GF_SG_FIELD_CODING_DYN:
28313 0 : return 1;
28314 : default:
28315 0 : return 6;
28316 : }
28317 0 : }
28318 :
28319 : static GF_Err SBMuscle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
28320 : {
28321 0 : switch(IndexMode) {
28322 : case GF_SG_FIELD_CODING_IN:
28323 0 : *allField = SBMuscle_In2All[inField];
28324 0 : return GF_OK;
28325 : case GF_SG_FIELD_CODING_DEF:
28326 0 : *allField = SBMuscle_Def2All[inField];
28327 0 : return GF_OK;
28328 : case GF_SG_FIELD_CODING_OUT:
28329 0 : *allField = SBMuscle_Out2All[inField];
28330 0 : return GF_OK;
28331 : case GF_SG_FIELD_CODING_DYN:
28332 0 : *allField = SBMuscle_Dyn2All[inField];
28333 0 : return GF_OK;
28334 : default:
28335 0 : return GF_BAD_PARAM;
28336 : }
28337 0 : }
28338 : static GF_Err SBMuscle_get_field(GF_Node *node, GF_FieldInfo *info)
28339 : {
28340 0 : switch (info->fieldIndex) {
28341 : case 0:
28342 0 : info->name = "falloff";
28343 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28344 0 : info->fieldType = GF_SG_VRML_SFINT32;
28345 0 : info->far_ptr = & ((M_SBMuscle *) node)->falloff;
28346 0 : return GF_OK;
28347 : case 1:
28348 0 : info->name = "muscleCurve";
28349 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28350 0 : info->fieldType = GF_SG_VRML_SFNODE;
28351 0 : info->NDTtype = NDT_SFGeometryNode;
28352 0 : info->far_ptr = & ((M_SBMuscle *)node)->muscleCurve;
28353 0 : return GF_OK;
28354 : case 2:
28355 0 : info->name = "muscleID";
28356 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28357 0 : info->fieldType = GF_SG_VRML_SFINT32;
28358 0 : info->far_ptr = & ((M_SBMuscle *) node)->muscleID;
28359 0 : return GF_OK;
28360 : case 3:
28361 0 : info->name = "radius";
28362 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28363 0 : info->fieldType = GF_SG_VRML_SFINT32;
28364 0 : info->far_ptr = & ((M_SBMuscle *) node)->radius;
28365 0 : return GF_OK;
28366 : case 4:
28367 0 : info->name = "skinCoordIndex";
28368 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28369 0 : info->fieldType = GF_SG_VRML_MFINT32;
28370 0 : info->far_ptr = & ((M_SBMuscle *) node)->skinCoordIndex;
28371 0 : return GF_OK;
28372 : case 5:
28373 0 : info->name = "skinCoordWeight";
28374 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28375 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
28376 0 : info->far_ptr = & ((M_SBMuscle *) node)->skinCoordWeight;
28377 0 : return GF_OK;
28378 : default:
28379 0 : return GF_BAD_PARAM;
28380 : }
28381 0 : }
28382 :
28383 :
28384 : static s32 SBMuscle_get_field_index_by_name(char *name)
28385 : {
28386 0 : if (!strcmp("falloff", name)) return 0;
28387 0 : if (!strcmp("muscleCurve", name)) return 1;
28388 0 : if (!strcmp("muscleID", name)) return 2;
28389 0 : if (!strcmp("radius", name)) return 3;
28390 0 : if (!strcmp("skinCoordIndex", name)) return 4;
28391 0 : if (!strcmp("skinCoordWeight", name)) return 5;
28392 0 : return -1;
28393 0 : }
28394 : static Bool SBMuscle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
28395 : {
28396 0 : switch (FieldIndex) {
28397 : case 0:
28398 0 : *AType = 0;
28399 0 : *QType = 13;
28400 0 : *QT13_bits = 3;
28401 0 : *b_min = FLT2FIX(-1);
28402 0 : *b_max = FLT2FIX(4);
28403 0 : return 1;
28404 : case 2:
28405 0 : *AType = 0;
28406 0 : *QType = 13;
28407 0 : *QT13_bits = 10;
28408 0 : *b_min = FLT2FIX(0);
28409 0 : *b_max = FLT2FIX(1023);
28410 0 : return 1;
28411 : case 3:
28412 0 : *AType = 11;
28413 0 : *QType = 7;
28414 0 : return 1;
28415 : case 4:
28416 0 : *AType = 0;
28417 0 : *QType = 14;
28418 0 : *b_min = FLT2FIX(0);
28419 0 : *b_max = FIX_MAX;
28420 0 : return 1;
28421 : default:
28422 0 : return 0;
28423 : }
28424 0 : }
28425 :
28426 :
28427 :
28428 : GF_Node *SBMuscle_Create()
28429 : {
28430 : M_SBMuscle *p;
28431 0 : GF_SAFEALLOC(p, M_SBMuscle);
28432 0 : if(!p) return NULL;
28433 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SBMuscle);
28434 :
28435 : /*default field values*/
28436 0 : p->falloff = 1;
28437 0 : p->muscleID = 0;
28438 0 : p->radius = 1;
28439 0 : return (GF_Node *)p;
28440 0 : }
28441 :
28442 :
28443 : /*
28444 : SBSegment Node deletion
28445 : */
28446 :
28447 : static void SBSegment_Del(GF_Node *node)
28448 : {
28449 0 : M_SBSegment *p = (M_SBSegment *) node;
28450 0 : gf_sg_mfvec3f_del(p->momentsOfInertia);
28451 0 : gf_sg_sfstring_del(p->name);
28452 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
28453 0 : gf_node_free((GF_Node *) p);
28454 0 : }
28455 :
28456 : static const u16 SBSegment_Def2All[] = { 2, 3, 4, 5, 6};
28457 : static const u16 SBSegment_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
28458 : static const u16 SBSegment_Out2All[] = { 2, 3, 4, 5, 6};
28459 : static const u16 SBSegment_Dyn2All[] = { 2};
28460 :
28461 : static u32 SBSegment_get_field_count(GF_Node *node, u8 IndexMode)
28462 : {
28463 0 : switch(IndexMode) {
28464 : case GF_SG_FIELD_CODING_IN:
28465 0 : return 7;
28466 : case GF_SG_FIELD_CODING_DEF:
28467 0 : return 5;
28468 : case GF_SG_FIELD_CODING_OUT:
28469 0 : return 5;
28470 : case GF_SG_FIELD_CODING_DYN:
28471 0 : return 1;
28472 : default:
28473 0 : return 7;
28474 : }
28475 0 : }
28476 :
28477 : static GF_Err SBSegment_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
28478 : {
28479 0 : switch(IndexMode) {
28480 : case GF_SG_FIELD_CODING_IN:
28481 0 : *allField = SBSegment_In2All[inField];
28482 0 : return GF_OK;
28483 : case GF_SG_FIELD_CODING_DEF:
28484 0 : *allField = SBSegment_Def2All[inField];
28485 0 : return GF_OK;
28486 : case GF_SG_FIELD_CODING_OUT:
28487 0 : *allField = SBSegment_Out2All[inField];
28488 0 : return GF_OK;
28489 : case GF_SG_FIELD_CODING_DYN:
28490 0 : *allField = SBSegment_Dyn2All[inField];
28491 0 : return GF_OK;
28492 : default:
28493 0 : return GF_BAD_PARAM;
28494 : }
28495 0 : }
28496 : static GF_Err SBSegment_get_field(GF_Node *node, GF_FieldInfo *info)
28497 : {
28498 0 : switch (info->fieldIndex) {
28499 : case 0:
28500 0 : info->name = "addChildren";
28501 0 : info->eventType = GF_SG_EVENT_IN;
28502 0 : info->on_event_in = ((M_SBSegment *)node)->on_addChildren;
28503 0 : info->fieldType = GF_SG_VRML_MFNODE;
28504 0 : info->NDTtype = NDT_SF3DNode;
28505 0 : info->far_ptr = & ((M_SBSegment *)node)->addChildren;
28506 0 : return GF_OK;
28507 : case 1:
28508 0 : info->name = "removeChildren";
28509 0 : info->eventType = GF_SG_EVENT_IN;
28510 0 : info->on_event_in = ((M_SBSegment *)node)->on_removeChildren;
28511 0 : info->fieldType = GF_SG_VRML_MFNODE;
28512 0 : info->NDTtype = NDT_SF3DNode;
28513 0 : info->far_ptr = & ((M_SBSegment *)node)->removeChildren;
28514 0 : return GF_OK;
28515 : case 2:
28516 0 : info->name = "centerOfMass";
28517 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28518 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
28519 0 : info->far_ptr = & ((M_SBSegment *) node)->centerOfMass;
28520 0 : return GF_OK;
28521 : case 3:
28522 0 : info->name = "children";
28523 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28524 0 : info->fieldType = GF_SG_VRML_MFNODE;
28525 0 : info->NDTtype = NDT_SF3DNode;
28526 0 : info->far_ptr = & ((M_SBSegment *)node)->children;
28527 0 : return GF_OK;
28528 : case 4:
28529 0 : info->name = "mass";
28530 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28531 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
28532 0 : info->far_ptr = & ((M_SBSegment *) node)->mass;
28533 0 : return GF_OK;
28534 : case 5:
28535 0 : info->name = "momentsOfInertia";
28536 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28537 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
28538 0 : info->far_ptr = & ((M_SBSegment *) node)->momentsOfInertia;
28539 0 : return GF_OK;
28540 : case 6:
28541 0 : info->name = "name";
28542 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28543 0 : info->fieldType = GF_SG_VRML_SFSTRING;
28544 0 : info->far_ptr = & ((M_SBSegment *) node)->name;
28545 0 : return GF_OK;
28546 : default:
28547 0 : return GF_BAD_PARAM;
28548 : }
28549 0 : }
28550 :
28551 :
28552 : static s32 SBSegment_get_field_index_by_name(char *name)
28553 : {
28554 0 : if (!strcmp("addChildren", name)) return 0;
28555 0 : if (!strcmp("removeChildren", name)) return 1;
28556 0 : if (!strcmp("centerOfMass", name)) return 2;
28557 0 : if (!strcmp("children", name)) return 3;
28558 0 : if (!strcmp("mass", name)) return 4;
28559 0 : if (!strcmp("momentsOfInertia", name)) return 5;
28560 0 : if (!strcmp("name", name)) return 6;
28561 0 : return -1;
28562 0 : }
28563 : static Bool SBSegment_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
28564 : {
28565 0 : switch (FieldIndex) {
28566 : case 2:
28567 0 : *AType = 1;
28568 0 : *QType = 1;
28569 0 : return 1;
28570 : default:
28571 0 : return 0;
28572 : }
28573 0 : }
28574 :
28575 :
28576 :
28577 : GF_Node *SBSegment_Create()
28578 : {
28579 : M_SBSegment *p;
28580 0 : GF_SAFEALLOC(p, M_SBSegment);
28581 0 : if(!p) return NULL;
28582 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SBSegment);
28583 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
28584 :
28585 : /*default field values*/
28586 0 : p->centerOfMass.x = FLT2FIX(0);
28587 0 : p->centerOfMass.y = FLT2FIX(0);
28588 0 : p->centerOfMass.z = FLT2FIX(0);
28589 0 : p->mass = FLT2FIX(0);
28590 0 : p->momentsOfInertia.vals = (SFVec3f *)gf_malloc(sizeof(SFVec3f)*3);
28591 0 : p->momentsOfInertia.count = 3;
28592 0 : p->momentsOfInertia.vals[0].x = FLT2FIX(0);
28593 0 : p->momentsOfInertia.vals[0].y = FLT2FIX(0);
28594 0 : p->momentsOfInertia.vals[0].z = FLT2FIX(0);
28595 0 : p->momentsOfInertia.vals[1].x = FLT2FIX(0);
28596 0 : p->momentsOfInertia.vals[1].y = FLT2FIX(0);
28597 0 : p->momentsOfInertia.vals[1].z = FLT2FIX(0);
28598 0 : p->momentsOfInertia.vals[2].x = FLT2FIX(0);
28599 0 : p->momentsOfInertia.vals[2].y = FLT2FIX(0);
28600 0 : p->momentsOfInertia.vals[2].z = FLT2FIX(0);
28601 0 : return (GF_Node *)p;
28602 0 : }
28603 :
28604 :
28605 : /*
28606 : SBSite Node deletion
28607 : */
28608 :
28609 : static void SBSite_Del(GF_Node *node)
28610 : {
28611 0 : M_SBSite *p = (M_SBSite *) node;
28612 0 : gf_sg_sfstring_del(p->name);
28613 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
28614 0 : gf_node_free((GF_Node *) p);
28615 0 : }
28616 :
28617 : static const u16 SBSite_Def2All[] = { 2, 3, 4, 5, 6, 7, 8};
28618 : static const u16 SBSite_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
28619 : static const u16 SBSite_Out2All[] = { 2, 3, 4, 5, 6, 7, 8};
28620 : static const u16 SBSite_Dyn2All[] = { 2, 5, 6, 7, 8};
28621 :
28622 : static u32 SBSite_get_field_count(GF_Node *node, u8 IndexMode)
28623 : {
28624 0 : switch(IndexMode) {
28625 : case GF_SG_FIELD_CODING_IN:
28626 0 : return 9;
28627 : case GF_SG_FIELD_CODING_DEF:
28628 0 : return 7;
28629 : case GF_SG_FIELD_CODING_OUT:
28630 0 : return 7;
28631 : case GF_SG_FIELD_CODING_DYN:
28632 0 : return 5;
28633 : default:
28634 0 : return 9;
28635 : }
28636 0 : }
28637 :
28638 : static GF_Err SBSite_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
28639 : {
28640 0 : switch(IndexMode) {
28641 : case GF_SG_FIELD_CODING_IN:
28642 0 : *allField = SBSite_In2All[inField];
28643 0 : return GF_OK;
28644 : case GF_SG_FIELD_CODING_DEF:
28645 0 : *allField = SBSite_Def2All[inField];
28646 0 : return GF_OK;
28647 : case GF_SG_FIELD_CODING_OUT:
28648 0 : *allField = SBSite_Out2All[inField];
28649 0 : return GF_OK;
28650 : case GF_SG_FIELD_CODING_DYN:
28651 0 : *allField = SBSite_Dyn2All[inField];
28652 0 : return GF_OK;
28653 : default:
28654 0 : return GF_BAD_PARAM;
28655 : }
28656 0 : }
28657 : static GF_Err SBSite_get_field(GF_Node *node, GF_FieldInfo *info)
28658 : {
28659 0 : switch (info->fieldIndex) {
28660 : case 0:
28661 0 : info->name = "addChildren";
28662 0 : info->eventType = GF_SG_EVENT_IN;
28663 0 : info->on_event_in = ((M_SBSite *)node)->on_addChildren;
28664 0 : info->fieldType = GF_SG_VRML_MFNODE;
28665 0 : info->NDTtype = NDT_SF3DNode;
28666 0 : info->far_ptr = & ((M_SBSite *)node)->addChildren;
28667 0 : return GF_OK;
28668 : case 1:
28669 0 : info->name = "removeChildren";
28670 0 : info->eventType = GF_SG_EVENT_IN;
28671 0 : info->on_event_in = ((M_SBSite *)node)->on_removeChildren;
28672 0 : info->fieldType = GF_SG_VRML_MFNODE;
28673 0 : info->NDTtype = NDT_SF3DNode;
28674 0 : info->far_ptr = & ((M_SBSite *)node)->removeChildren;
28675 0 : return GF_OK;
28676 : case 2:
28677 0 : info->name = "center";
28678 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28679 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
28680 0 : info->far_ptr = & ((M_SBSite *) node)->center;
28681 0 : return GF_OK;
28682 : case 3:
28683 0 : info->name = "children";
28684 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28685 0 : info->fieldType = GF_SG_VRML_MFNODE;
28686 0 : info->NDTtype = NDT_SF3DNode;
28687 0 : info->far_ptr = & ((M_SBSite *)node)->children;
28688 0 : return GF_OK;
28689 : case 4:
28690 0 : info->name = "name";
28691 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28692 0 : info->fieldType = GF_SG_VRML_SFSTRING;
28693 0 : info->far_ptr = & ((M_SBSite *) node)->name;
28694 0 : return GF_OK;
28695 : case 5:
28696 0 : info->name = "rotation";
28697 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28698 0 : info->fieldType = GF_SG_VRML_SFROTATION;
28699 0 : info->far_ptr = & ((M_SBSite *) node)->rotation;
28700 0 : return GF_OK;
28701 : case 6:
28702 0 : info->name = "scale";
28703 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28704 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
28705 0 : info->far_ptr = & ((M_SBSite *) node)->scale;
28706 0 : return GF_OK;
28707 : case 7:
28708 0 : info->name = "scaleOrientation";
28709 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28710 0 : info->fieldType = GF_SG_VRML_SFROTATION;
28711 0 : info->far_ptr = & ((M_SBSite *) node)->scaleOrientation;
28712 0 : return GF_OK;
28713 : case 8:
28714 0 : info->name = "translation";
28715 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28716 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
28717 0 : info->far_ptr = & ((M_SBSite *) node)->translation;
28718 0 : return GF_OK;
28719 : default:
28720 0 : return GF_BAD_PARAM;
28721 : }
28722 0 : }
28723 :
28724 :
28725 : static s32 SBSite_get_field_index_by_name(char *name)
28726 : {
28727 0 : if (!strcmp("addChildren", name)) return 0;
28728 0 : if (!strcmp("removeChildren", name)) return 1;
28729 0 : if (!strcmp("center", name)) return 2;
28730 0 : if (!strcmp("children", name)) return 3;
28731 0 : if (!strcmp("name", name)) return 4;
28732 0 : if (!strcmp("rotation", name)) return 5;
28733 0 : if (!strcmp("scale", name)) return 6;
28734 0 : if (!strcmp("scaleOrientation", name)) return 7;
28735 0 : if (!strcmp("translation", name)) return 8;
28736 0 : return -1;
28737 0 : }
28738 : static Bool SBSite_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
28739 : {
28740 0 : switch (FieldIndex) {
28741 : case 2:
28742 0 : *AType = 1;
28743 0 : *QType = 1;
28744 0 : return 1;
28745 : case 5:
28746 0 : *AType = 10;
28747 0 : *QType = 10;
28748 0 : return 1;
28749 : case 6:
28750 0 : *AType = 11;
28751 0 : *QType = 7;
28752 0 : return 1;
28753 : case 7:
28754 0 : *AType = 10;
28755 0 : *QType = 10;
28756 0 : return 1;
28757 : case 8:
28758 0 : *AType = 1;
28759 0 : *QType = 1;
28760 0 : return 1;
28761 : default:
28762 0 : return 0;
28763 : }
28764 0 : }
28765 :
28766 :
28767 :
28768 : GF_Node *SBSite_Create()
28769 : {
28770 : M_SBSite *p;
28771 0 : GF_SAFEALLOC(p, M_SBSite);
28772 0 : if(!p) return NULL;
28773 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SBSite);
28774 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
28775 :
28776 : /*default field values*/
28777 0 : p->center.x = FLT2FIX(0);
28778 0 : p->center.y = FLT2FIX(0);
28779 0 : p->center.z = FLT2FIX(0);
28780 0 : p->rotation.x = FLT2FIX(0);
28781 0 : p->rotation.y = FLT2FIX(0);
28782 0 : p->rotation.z = FLT2FIX(1);
28783 0 : p->rotation.q = FLT2FIX(0);
28784 0 : p->scale.x = FLT2FIX(1);
28785 0 : p->scale.y = FLT2FIX(1);
28786 0 : p->scale.z = FLT2FIX(1);
28787 0 : p->scaleOrientation.x = FLT2FIX(0);
28788 0 : p->scaleOrientation.y = FLT2FIX(0);
28789 0 : p->scaleOrientation.z = FLT2FIX(1);
28790 0 : p->scaleOrientation.q = FLT2FIX(0);
28791 0 : p->translation.x = FLT2FIX(0);
28792 0 : p->translation.y = FLT2FIX(0);
28793 0 : p->translation.z = FLT2FIX(0);
28794 0 : return (GF_Node *)p;
28795 0 : }
28796 :
28797 :
28798 : /*
28799 : SBSkinnedModel Node deletion
28800 : */
28801 :
28802 : static void SBSkinnedModel_Del(GF_Node *node)
28803 : {
28804 0 : M_SBSkinnedModel *p = (M_SBSkinnedModel *) node;
28805 0 : gf_node_unregister_children((GF_Node *) p, p->bones);
28806 0 : gf_node_unregister_children((GF_Node *) p, p->muscles);
28807 0 : gf_sg_sfstring_del(p->name);
28808 0 : gf_node_unregister_children((GF_Node *) p, p->segments);
28809 0 : gf_node_unregister_children((GF_Node *) p, p->sites);
28810 0 : gf_node_unregister_children((GF_Node *) p, p->skeleton);
28811 0 : gf_node_unregister_children((GF_Node *) p, p->skin);
28812 0 : gf_node_unregister((GF_Node *) p->skinCoord, (GF_Node *) p);
28813 0 : gf_node_unregister((GF_Node *) p->skinNormal, (GF_Node *) p);
28814 0 : gf_node_unregister((GF_Node *) p->weighsComputationSkinCoord, (GF_Node *) p);
28815 0 : gf_node_free((GF_Node *) p);
28816 0 : }
28817 :
28818 : static const u16 SBSkinnedModel_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
28819 : static const u16 SBSkinnedModel_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
28820 : static const u16 SBSkinnedModel_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
28821 : static const u16 SBSkinnedModel_Dyn2All[] = { 1, 4, 6, 7, 13};
28822 :
28823 : static u32 SBSkinnedModel_get_field_count(GF_Node *node, u8 IndexMode)
28824 : {
28825 0 : switch(IndexMode) {
28826 : case GF_SG_FIELD_CODING_IN:
28827 0 : return 15;
28828 : case GF_SG_FIELD_CODING_DEF:
28829 0 : return 15;
28830 : case GF_SG_FIELD_CODING_OUT:
28831 0 : return 15;
28832 : case GF_SG_FIELD_CODING_DYN:
28833 0 : return 5;
28834 : default:
28835 0 : return 15;
28836 : }
28837 0 : }
28838 :
28839 : static GF_Err SBSkinnedModel_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
28840 : {
28841 0 : switch(IndexMode) {
28842 : case GF_SG_FIELD_CODING_IN:
28843 0 : *allField = SBSkinnedModel_In2All[inField];
28844 0 : return GF_OK;
28845 : case GF_SG_FIELD_CODING_DEF:
28846 0 : *allField = SBSkinnedModel_Def2All[inField];
28847 0 : return GF_OK;
28848 : case GF_SG_FIELD_CODING_OUT:
28849 0 : *allField = SBSkinnedModel_Out2All[inField];
28850 0 : return GF_OK;
28851 : case GF_SG_FIELD_CODING_DYN:
28852 0 : *allField = SBSkinnedModel_Dyn2All[inField];
28853 0 : return GF_OK;
28854 : default:
28855 0 : return GF_BAD_PARAM;
28856 : }
28857 0 : }
28858 : static GF_Err SBSkinnedModel_get_field(GF_Node *node, GF_FieldInfo *info)
28859 : {
28860 0 : switch (info->fieldIndex) {
28861 : case 0:
28862 0 : info->name = "bones";
28863 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28864 0 : info->fieldType = GF_SG_VRML_MFNODE;
28865 0 : info->NDTtype = NDT_SFSBBoneNode;
28866 0 : info->far_ptr = & ((M_SBSkinnedModel *)node)->bones;
28867 0 : return GF_OK;
28868 : case 1:
28869 0 : info->name = "center";
28870 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28871 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
28872 0 : info->far_ptr = & ((M_SBSkinnedModel *) node)->center;
28873 0 : return GF_OK;
28874 : case 2:
28875 0 : info->name = "muscles";
28876 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28877 0 : info->fieldType = GF_SG_VRML_MFNODE;
28878 0 : info->NDTtype = NDT_SFSBMuscleNode;
28879 0 : info->far_ptr = & ((M_SBSkinnedModel *)node)->muscles;
28880 0 : return GF_OK;
28881 : case 3:
28882 0 : info->name = "name";
28883 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28884 0 : info->fieldType = GF_SG_VRML_SFSTRING;
28885 0 : info->far_ptr = & ((M_SBSkinnedModel *) node)->name;
28886 0 : return GF_OK;
28887 : case 4:
28888 0 : info->name = "rotation";
28889 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28890 0 : info->fieldType = GF_SG_VRML_SFROTATION;
28891 0 : info->far_ptr = & ((M_SBSkinnedModel *) node)->rotation;
28892 0 : return GF_OK;
28893 : case 5:
28894 0 : info->name = "segments";
28895 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28896 0 : info->fieldType = GF_SG_VRML_MFNODE;
28897 0 : info->NDTtype = NDT_SFSBSegmentNode;
28898 0 : info->far_ptr = & ((M_SBSkinnedModel *)node)->segments;
28899 0 : return GF_OK;
28900 : case 6:
28901 0 : info->name = "scale";
28902 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28903 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
28904 0 : info->far_ptr = & ((M_SBSkinnedModel *) node)->scale;
28905 0 : return GF_OK;
28906 : case 7:
28907 0 : info->name = "scaleOrientation";
28908 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28909 0 : info->fieldType = GF_SG_VRML_SFROTATION;
28910 0 : info->far_ptr = & ((M_SBSkinnedModel *) node)->scaleOrientation;
28911 0 : return GF_OK;
28912 : case 8:
28913 0 : info->name = "sites";
28914 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28915 0 : info->fieldType = GF_SG_VRML_MFNODE;
28916 0 : info->NDTtype = NDT_SFSBSiteNode;
28917 0 : info->far_ptr = & ((M_SBSkinnedModel *)node)->sites;
28918 0 : return GF_OK;
28919 : case 9:
28920 0 : info->name = "skeleton";
28921 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28922 0 : info->fieldType = GF_SG_VRML_MFNODE;
28923 0 : info->NDTtype = NDT_SF3DNode;
28924 0 : info->far_ptr = & ((M_SBSkinnedModel *)node)->skeleton;
28925 0 : return GF_OK;
28926 : case 10:
28927 0 : info->name = "skin";
28928 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28929 0 : info->fieldType = GF_SG_VRML_MFNODE;
28930 0 : info->NDTtype = NDT_SF3DNode;
28931 0 : info->far_ptr = & ((M_SBSkinnedModel *)node)->skin;
28932 0 : return GF_OK;
28933 : case 11:
28934 0 : info->name = "skinCoord";
28935 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28936 0 : info->fieldType = GF_SG_VRML_SFNODE;
28937 0 : info->NDTtype = NDT_SFCoordinateNode;
28938 0 : info->far_ptr = & ((M_SBSkinnedModel *)node)->skinCoord;
28939 0 : return GF_OK;
28940 : case 12:
28941 0 : info->name = "skinNormal";
28942 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28943 0 : info->fieldType = GF_SG_VRML_SFNODE;
28944 0 : info->NDTtype = NDT_SFNormalNode;
28945 0 : info->far_ptr = & ((M_SBSkinnedModel *)node)->skinNormal;
28946 0 : return GF_OK;
28947 : case 13:
28948 0 : info->name = "translation";
28949 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28950 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
28951 0 : info->far_ptr = & ((M_SBSkinnedModel *) node)->translation;
28952 0 : return GF_OK;
28953 : case 14:
28954 0 : info->name = "weighsComputationSkinCoord";
28955 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28956 0 : info->fieldType = GF_SG_VRML_SFNODE;
28957 0 : info->NDTtype = NDT_SF3DNode;
28958 0 : info->far_ptr = & ((M_SBSkinnedModel *)node)->weighsComputationSkinCoord;
28959 0 : return GF_OK;
28960 : default:
28961 0 : return GF_BAD_PARAM;
28962 : }
28963 0 : }
28964 :
28965 :
28966 : static s32 SBSkinnedModel_get_field_index_by_name(char *name)
28967 : {
28968 0 : if (!strcmp("bones", name)) return 0;
28969 0 : if (!strcmp("center", name)) return 1;
28970 0 : if (!strcmp("muscles", name)) return 2;
28971 0 : if (!strcmp("name", name)) return 3;
28972 0 : if (!strcmp("rotation", name)) return 4;
28973 0 : if (!strcmp("segments", name)) return 5;
28974 0 : if (!strcmp("scale", name)) return 6;
28975 0 : if (!strcmp("scaleOrientation", name)) return 7;
28976 0 : if (!strcmp("sites", name)) return 8;
28977 0 : if (!strcmp("skeleton", name)) return 9;
28978 0 : if (!strcmp("skin", name)) return 10;
28979 0 : if (!strcmp("skinCoord", name)) return 11;
28980 0 : if (!strcmp("skinNormal", name)) return 12;
28981 0 : if (!strcmp("translation", name)) return 13;
28982 0 : if (!strcmp("weighsComputationSkinCoord", name)) return 14;
28983 0 : return -1;
28984 0 : }
28985 : static Bool SBSkinnedModel_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
28986 : {
28987 0 : switch (FieldIndex) {
28988 : case 1:
28989 0 : *AType = 1;
28990 0 : *QType = 1;
28991 0 : return 1;
28992 : case 4:
28993 0 : *AType = 10;
28994 0 : *QType = 10;
28995 0 : return 1;
28996 : case 6:
28997 0 : *AType = 11;
28998 0 : *QType = 7;
28999 0 : return 1;
29000 : case 7:
29001 0 : *AType = 10;
29002 0 : *QType = 10;
29003 0 : return 1;
29004 : case 13:
29005 0 : *AType = 1;
29006 0 : *QType = 1;
29007 0 : return 1;
29008 : default:
29009 0 : return 0;
29010 : }
29011 0 : }
29012 :
29013 :
29014 :
29015 : GF_Node *SBSkinnedModel_Create()
29016 : {
29017 : M_SBSkinnedModel *p;
29018 0 : GF_SAFEALLOC(p, M_SBSkinnedModel);
29019 0 : if(!p) return NULL;
29020 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SBSkinnedModel);
29021 :
29022 : /*default field values*/
29023 0 : p->center.x = FLT2FIX(0);
29024 0 : p->center.y = FLT2FIX(0);
29025 0 : p->center.z = FLT2FIX(0);
29026 0 : p->rotation.x = FLT2FIX(0);
29027 0 : p->rotation.y = FLT2FIX(0);
29028 0 : p->rotation.z = FLT2FIX(1);
29029 0 : p->rotation.q = FLT2FIX(0);
29030 0 : p->scale.x = FLT2FIX(1);
29031 0 : p->scale.y = FLT2FIX(1);
29032 0 : p->scale.z = FLT2FIX(1);
29033 0 : p->scaleOrientation.x = FLT2FIX(0);
29034 0 : p->scaleOrientation.y = FLT2FIX(0);
29035 0 : p->scaleOrientation.z = FLT2FIX(1);
29036 0 : p->scaleOrientation.q = FLT2FIX(0);
29037 0 : p->translation.x = FLT2FIX(0);
29038 0 : p->translation.y = FLT2FIX(0);
29039 0 : p->translation.z = FLT2FIX(0);
29040 0 : return (GF_Node *)p;
29041 0 : }
29042 :
29043 :
29044 : /*
29045 : SBVCAnimation Node deletion
29046 : */
29047 :
29048 : static void SBVCAnimation_Del(GF_Node *node)
29049 : {
29050 0 : M_SBVCAnimation *p = (M_SBVCAnimation *) node;
29051 0 : gf_sg_mfurl_del(p->url);
29052 0 : gf_node_unregister_children((GF_Node *) p, p->virtualCharacters);
29053 0 : gf_node_free((GF_Node *) p);
29054 0 : }
29055 :
29056 : static const u16 SBVCAnimation_Def2All[] = { 0, 1};
29057 : static const u16 SBVCAnimation_In2All[] = { 0, 1};
29058 : static const u16 SBVCAnimation_Out2All[] = { 0, 1};
29059 :
29060 : static u32 SBVCAnimation_get_field_count(GF_Node *node, u8 IndexMode)
29061 : {
29062 0 : switch(IndexMode) {
29063 : case GF_SG_FIELD_CODING_IN:
29064 0 : return 2;
29065 : case GF_SG_FIELD_CODING_DEF:
29066 0 : return 2;
29067 : case GF_SG_FIELD_CODING_OUT:
29068 0 : return 2;
29069 : case GF_SG_FIELD_CODING_DYN:
29070 0 : return 0;
29071 : default:
29072 0 : return 2;
29073 : }
29074 0 : }
29075 :
29076 : static GF_Err SBVCAnimation_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
29077 : {
29078 0 : switch(IndexMode) {
29079 : case GF_SG_FIELD_CODING_IN:
29080 0 : *allField = SBVCAnimation_In2All[inField];
29081 0 : return GF_OK;
29082 : case GF_SG_FIELD_CODING_DEF:
29083 0 : *allField = SBVCAnimation_Def2All[inField];
29084 0 : return GF_OK;
29085 : case GF_SG_FIELD_CODING_OUT:
29086 0 : *allField = SBVCAnimation_Out2All[inField];
29087 0 : return GF_OK;
29088 : default:
29089 0 : return GF_BAD_PARAM;
29090 : }
29091 0 : }
29092 : static GF_Err SBVCAnimation_get_field(GF_Node *node, GF_FieldInfo *info)
29093 : {
29094 0 : switch (info->fieldIndex) {
29095 : case 0:
29096 0 : info->name = "url";
29097 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29098 0 : info->fieldType = GF_SG_VRML_MFURL;
29099 0 : info->far_ptr = & ((M_SBVCAnimation *) node)->url;
29100 0 : return GF_OK;
29101 : case 1:
29102 0 : info->name = "virtualCharacters";
29103 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29104 0 : info->fieldType = GF_SG_VRML_MFNODE;
29105 0 : info->NDTtype = NDT_SF3DNode;
29106 0 : info->far_ptr = & ((M_SBVCAnimation *)node)->virtualCharacters;
29107 0 : return GF_OK;
29108 : default:
29109 0 : return GF_BAD_PARAM;
29110 : }
29111 0 : }
29112 :
29113 :
29114 : static s32 SBVCAnimation_get_field_index_by_name(char *name)
29115 : {
29116 0 : if (!strcmp("url", name)) return 0;
29117 0 : if (!strcmp("virtualCharacters", name)) return 1;
29118 0 : return -1;
29119 0 : }
29120 : static Bool SBVCAnimation_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
29121 : {
29122 : switch (FieldIndex) {
29123 : default:
29124 0 : return 0;
29125 : }
29126 : }
29127 :
29128 :
29129 :
29130 : GF_Node *SBVCAnimation_Create()
29131 : {
29132 : M_SBVCAnimation *p;
29133 0 : GF_SAFEALLOC(p, M_SBVCAnimation);
29134 0 : if(!p) return NULL;
29135 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SBVCAnimation);
29136 :
29137 : /*default field values*/
29138 0 : return (GF_Node *)p;
29139 0 : }
29140 :
29141 :
29142 : /*
29143 : ScalarAnimator Node deletion
29144 : */
29145 :
29146 : static void ScalarAnimator_Del(GF_Node *node)
29147 : {
29148 36 : M_ScalarAnimator *p = (M_ScalarAnimator *) node;
29149 18 : gf_sg_mffloat_del(p->key);
29150 18 : gf_sg_mfvec2f_del(p->keySpline);
29151 18 : gf_sg_mffloat_del(p->keyValue);
29152 18 : gf_sg_mffloat_del(p->weight);
29153 18 : gf_node_free((GF_Node *) p);
29154 18 : }
29155 :
29156 : static const u16 ScalarAnimator_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8};
29157 : static const u16 ScalarAnimator_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
29158 : static const u16 ScalarAnimator_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
29159 :
29160 : static u32 ScalarAnimator_get_field_count(GF_Node *node, u8 IndexMode)
29161 : {
29162 68 : switch(IndexMode) {
29163 : case GF_SG_FIELD_CODING_IN:
29164 9 : return 9;
29165 : case GF_SG_FIELD_CODING_DEF:
29166 9 : return 8;
29167 : case GF_SG_FIELD_CODING_OUT:
29168 9 : return 10;
29169 : case GF_SG_FIELD_CODING_DYN:
29170 0 : return 0;
29171 : default:
29172 7 : return 11;
29173 : }
29174 34 : }
29175 :
29176 : static GF_Err ScalarAnimator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
29177 : {
29178 136 : switch(IndexMode) {
29179 : case GF_SG_FIELD_CODING_IN:
29180 7 : *allField = ScalarAnimator_In2All[inField];
29181 7 : return GF_OK;
29182 : case GF_SG_FIELD_CODING_DEF:
29183 36 : *allField = ScalarAnimator_Def2All[inField];
29184 36 : return GF_OK;
29185 : case GF_SG_FIELD_CODING_OUT:
29186 25 : *allField = ScalarAnimator_Out2All[inField];
29187 25 : return GF_OK;
29188 : default:
29189 0 : return GF_BAD_PARAM;
29190 : }
29191 68 : }
29192 : static GF_Err ScalarAnimator_get_field(GF_Node *node, GF_FieldInfo *info)
29193 : {
29194 482 : switch (info->fieldIndex) {
29195 : case 0:
29196 15 : info->name = "set_fraction";
29197 15 : info->eventType = GF_SG_EVENT_IN;
29198 15 : info->on_event_in = ((M_ScalarAnimator *)node)->on_set_fraction;
29199 15 : info->fieldType = GF_SG_VRML_SFFLOAT;
29200 15 : info->far_ptr = & ((M_ScalarAnimator *) node)->set_fraction;
29201 15 : return GF_OK;
29202 : case 1:
29203 18 : info->name = "fromTo";
29204 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29205 18 : info->fieldType = GF_SG_VRML_SFVEC2F;
29206 18 : info->far_ptr = & ((M_ScalarAnimator *) node)->fromTo;
29207 18 : return GF_OK;
29208 : case 2:
29209 18 : info->name = "key";
29210 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29211 18 : info->fieldType = GF_SG_VRML_MFFLOAT;
29212 18 : info->far_ptr = & ((M_ScalarAnimator *) node)->key;
29213 18 : return GF_OK;
29214 : case 3:
29215 33 : info->name = "keyType";
29216 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29217 33 : info->fieldType = GF_SG_VRML_SFINT32;
29218 33 : info->far_ptr = & ((M_ScalarAnimator *) node)->keyType;
29219 33 : return GF_OK;
29220 : case 4:
29221 33 : info->name = "keySpline";
29222 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29223 33 : info->fieldType = GF_SG_VRML_MFVEC2F;
29224 33 : info->far_ptr = & ((M_ScalarAnimator *) node)->keySpline;
29225 33 : return GF_OK;
29226 : case 5:
29227 33 : info->name = "keyValue";
29228 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29229 33 : info->fieldType = GF_SG_VRML_MFFLOAT;
29230 33 : info->far_ptr = & ((M_ScalarAnimator *) node)->keyValue;
29231 33 : return GF_OK;
29232 : case 6:
29233 33 : info->name = "keyValueType";
29234 33 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29235 33 : info->fieldType = GF_SG_VRML_SFINT32;
29236 33 : info->far_ptr = & ((M_ScalarAnimator *) node)->keyValueType;
29237 33 : return GF_OK;
29238 : case 7:
29239 18 : info->name = "offset";
29240 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29241 18 : info->fieldType = GF_SG_VRML_SFFLOAT;
29242 18 : info->far_ptr = & ((M_ScalarAnimator *) node)->offset;
29243 18 : return GF_OK;
29244 : case 8:
29245 18 : info->name = "weight";
29246 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29247 18 : info->fieldType = GF_SG_VRML_MFFLOAT;
29248 18 : info->far_ptr = & ((M_ScalarAnimator *) node)->weight;
29249 18 : return GF_OK;
29250 : case 9:
29251 7 : info->name = "endValue";
29252 7 : info->eventType = GF_SG_EVENT_OUT;
29253 7 : info->fieldType = GF_SG_VRML_SFFLOAT;
29254 7 : info->far_ptr = & ((M_ScalarAnimator *) node)->endValue;
29255 7 : return GF_OK;
29256 : case 10:
29257 15 : info->name = "value_changed";
29258 15 : info->eventType = GF_SG_EVENT_OUT;
29259 15 : info->fieldType = GF_SG_VRML_SFFLOAT;
29260 15 : info->far_ptr = & ((M_ScalarAnimator *) node)->value_changed;
29261 15 : return GF_OK;
29262 : default:
29263 0 : return GF_BAD_PARAM;
29264 : }
29265 241 : }
29266 :
29267 :
29268 : static s32 ScalarAnimator_get_field_index_by_name(char *name)
29269 : {
29270 52 : if (!strcmp("set_fraction", name)) return 0;
29271 20 : if (!strcmp("fromTo", name)) return 1;
29272 20 : if (!strcmp("key", name)) return 2;
29273 24 : if (!strcmp("keyType", name)) return 3;
29274 20 : if (!strcmp("keySpline", name)) return 4;
29275 16 : if (!strcmp("keyValue", name)) return 5;
29276 12 : if (!strcmp("keyValueType", name)) return 6;
29277 4 : if (!strcmp("offset", name)) return 7;
29278 4 : if (!strcmp("weight", name)) return 8;
29279 4 : if (!strcmp("endValue", name)) return 9;
29280 8 : if (!strcmp("value_changed", name)) return 10;
29281 0 : return -1;
29282 24 : }
29283 : static Bool ScalarAnimator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
29284 : {
29285 0 : switch (FieldIndex) {
29286 : case 1:
29287 0 : *AType = 0;
29288 0 : *QType = 8;
29289 0 : return 1;
29290 : case 2:
29291 0 : *AType = 0;
29292 0 : *QType = 8;
29293 0 : return 1;
29294 : case 4:
29295 0 : *AType = 0;
29296 0 : *QType = 8;
29297 0 : return 1;
29298 : case 5:
29299 0 : *AType = 0;
29300 0 : *QType = 0;
29301 0 : return 1;
29302 : default:
29303 0 : return 0;
29304 : }
29305 0 : }
29306 :
29307 :
29308 :
29309 : GF_Node *ScalarAnimator_Create()
29310 : {
29311 : M_ScalarAnimator *p;
29312 54 : GF_SAFEALLOC(p, M_ScalarAnimator);
29313 18 : if(!p) return NULL;
29314 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ScalarAnimator);
29315 :
29316 : /*default field values*/
29317 18 : p->fromTo.x = FLT2FIX(0);
29318 18 : p->fromTo.y = FLT2FIX(1);
29319 18 : p->keyType = 0;
29320 18 : p->keySpline.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
29321 18 : p->keySpline.count = 2;
29322 18 : p->keySpline.vals[0].x = FLT2FIX(0);
29323 18 : p->keySpline.vals[0].y = FLT2FIX(0);
29324 18 : p->keySpline.vals[1].x = FLT2FIX(1);
29325 18 : p->keySpline.vals[1].y = FLT2FIX(1);
29326 18 : p->keyValueType = 0;
29327 18 : p->offset = FLT2FIX(0);
29328 18 : return (GF_Node *)p;
29329 18 : }
29330 :
29331 :
29332 : /*
29333 : SimpleTexture Node deletion
29334 : */
29335 :
29336 : static void SimpleTexture_Del(GF_Node *node)
29337 : {
29338 0 : M_SimpleTexture *p = (M_SimpleTexture *) node;
29339 0 : gf_node_unregister((GF_Node *) p->depth, (GF_Node *) p);
29340 0 : gf_node_unregister((GF_Node *) p->texture, (GF_Node *) p);
29341 0 : gf_node_free((GF_Node *) p);
29342 0 : }
29343 :
29344 : static const u16 SimpleTexture_Def2All[] = { 0, 1};
29345 :
29346 : static u32 SimpleTexture_get_field_count(GF_Node *node, u8 IndexMode)
29347 : {
29348 0 : switch(IndexMode) {
29349 : case GF_SG_FIELD_CODING_IN:
29350 0 : return 0;
29351 : case GF_SG_FIELD_CODING_DEF:
29352 0 : return 2;
29353 : case GF_SG_FIELD_CODING_OUT:
29354 0 : return 0;
29355 : case GF_SG_FIELD_CODING_DYN:
29356 0 : return 0;
29357 : default:
29358 0 : return 2;
29359 : }
29360 0 : }
29361 :
29362 : static GF_Err SimpleTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
29363 : {
29364 0 : switch(IndexMode) {
29365 : case GF_SG_FIELD_CODING_DEF:
29366 0 : *allField = SimpleTexture_Def2All[inField];
29367 0 : return GF_OK;
29368 : default:
29369 0 : return GF_BAD_PARAM;
29370 : }
29371 0 : }
29372 : static GF_Err SimpleTexture_get_field(GF_Node *node, GF_FieldInfo *info)
29373 : {
29374 0 : switch (info->fieldIndex) {
29375 : case 0:
29376 0 : info->name = "depth";
29377 0 : info->eventType = GF_SG_EVENT_FIELD;
29378 0 : info->fieldType = GF_SG_VRML_SFNODE;
29379 0 : info->NDTtype = NDT_SFTextureNode;
29380 0 : info->far_ptr = & ((M_SimpleTexture *)node)->depth;
29381 0 : return GF_OK;
29382 : case 1:
29383 0 : info->name = "texture";
29384 0 : info->eventType = GF_SG_EVENT_FIELD;
29385 0 : info->fieldType = GF_SG_VRML_SFNODE;
29386 0 : info->NDTtype = NDT_SFTextureNode;
29387 0 : info->far_ptr = & ((M_SimpleTexture *)node)->texture;
29388 0 : return GF_OK;
29389 : default:
29390 0 : return GF_BAD_PARAM;
29391 : }
29392 0 : }
29393 :
29394 :
29395 : static s32 SimpleTexture_get_field_index_by_name(char *name)
29396 : {
29397 0 : if (!strcmp("depth", name)) return 0;
29398 0 : if (!strcmp("texture", name)) return 1;
29399 0 : return -1;
29400 0 : }
29401 : static Bool SimpleTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
29402 : {
29403 : switch (FieldIndex) {
29404 : default:
29405 0 : return 0;
29406 : }
29407 : }
29408 :
29409 :
29410 :
29411 : GF_Node *SimpleTexture_Create()
29412 : {
29413 : M_SimpleTexture *p;
29414 0 : GF_SAFEALLOC(p, M_SimpleTexture);
29415 0 : if(!p) return NULL;
29416 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SimpleTexture);
29417 :
29418 : /*default field values*/
29419 0 : return (GF_Node *)p;
29420 0 : }
29421 :
29422 :
29423 : /*
29424 : SolidRep Node deletion
29425 : */
29426 :
29427 : static void SolidRep_Del(GF_Node *node)
29428 : {
29429 0 : M_SolidRep *p = (M_SolidRep *) node;
29430 0 : gf_sg_mfint32_del(p->densityList);
29431 0 : gf_node_unregister((GF_Node *) p->solidTree, (GF_Node *) p);
29432 0 : gf_node_free((GF_Node *) p);
29433 0 : }
29434 :
29435 : static const u16 SolidRep_Def2All[] = { 0, 1, 2};
29436 : static const u16 SolidRep_In2All[] = { 0, 1, 2};
29437 : static const u16 SolidRep_Out2All[] = { 0, 1, 2};
29438 : static const u16 SolidRep_Dyn2All[] = { 0};
29439 :
29440 : static u32 SolidRep_get_field_count(GF_Node *node, u8 IndexMode)
29441 : {
29442 0 : switch(IndexMode) {
29443 : case GF_SG_FIELD_CODING_IN:
29444 0 : return 3;
29445 : case GF_SG_FIELD_CODING_DEF:
29446 0 : return 3;
29447 : case GF_SG_FIELD_CODING_OUT:
29448 0 : return 3;
29449 : case GF_SG_FIELD_CODING_DYN:
29450 0 : return 1;
29451 : default:
29452 0 : return 3;
29453 : }
29454 0 : }
29455 :
29456 : static GF_Err SolidRep_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
29457 : {
29458 0 : switch(IndexMode) {
29459 : case GF_SG_FIELD_CODING_IN:
29460 0 : *allField = SolidRep_In2All[inField];
29461 0 : return GF_OK;
29462 : case GF_SG_FIELD_CODING_DEF:
29463 0 : *allField = SolidRep_Def2All[inField];
29464 0 : return GF_OK;
29465 : case GF_SG_FIELD_CODING_OUT:
29466 0 : *allField = SolidRep_Out2All[inField];
29467 0 : return GF_OK;
29468 : case GF_SG_FIELD_CODING_DYN:
29469 0 : *allField = SolidRep_Dyn2All[inField];
29470 0 : return GF_OK;
29471 : default:
29472 0 : return GF_BAD_PARAM;
29473 : }
29474 0 : }
29475 : static GF_Err SolidRep_get_field(GF_Node *node, GF_FieldInfo *info)
29476 : {
29477 0 : switch (info->fieldIndex) {
29478 : case 0:
29479 0 : info->name = "bboxSize";
29480 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29481 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
29482 0 : info->far_ptr = & ((M_SolidRep *) node)->bboxSize;
29483 0 : return GF_OK;
29484 : case 1:
29485 0 : info->name = "densityList";
29486 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29487 0 : info->fieldType = GF_SG_VRML_MFINT32;
29488 0 : info->far_ptr = & ((M_SolidRep *) node)->densityList;
29489 0 : return GF_OK;
29490 : case 2:
29491 0 : info->name = "solidTree";
29492 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29493 0 : info->fieldType = GF_SG_VRML_SFNODE;
29494 0 : info->NDTtype = NDT_SF3DNode;
29495 0 : info->far_ptr = & ((M_SolidRep *)node)->solidTree;
29496 0 : return GF_OK;
29497 : default:
29498 0 : return GF_BAD_PARAM;
29499 : }
29500 0 : }
29501 :
29502 :
29503 : static s32 SolidRep_get_field_index_by_name(char *name)
29504 : {
29505 0 : if (!strcmp("bboxSize", name)) return 0;
29506 0 : if (!strcmp("densityList", name)) return 1;
29507 0 : if (!strcmp("solidTree", name)) return 2;
29508 0 : return -1;
29509 0 : }
29510 : static Bool SolidRep_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
29511 : {
29512 0 : switch (FieldIndex) {
29513 : case 0:
29514 0 : *AType = 11;
29515 0 : *QType = 11;
29516 0 : *b_min = FLT2FIX(0);
29517 0 : *b_max = FIX_MAX;
29518 0 : return 1;
29519 : default:
29520 0 : return 0;
29521 : }
29522 0 : }
29523 :
29524 :
29525 :
29526 : GF_Node *SolidRep_Create()
29527 : {
29528 : M_SolidRep *p;
29529 0 : GF_SAFEALLOC(p, M_SolidRep);
29530 0 : if(!p) return NULL;
29531 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SolidRep);
29532 :
29533 : /*default field values*/
29534 0 : p->bboxSize.x = FLT2FIX(2);
29535 0 : p->bboxSize.y = FLT2FIX(2);
29536 0 : p->bboxSize.z = FLT2FIX(2);
29537 0 : return (GF_Node *)p;
29538 0 : }
29539 :
29540 :
29541 : /*
29542 : SubdivisionSurface Node deletion
29543 : */
29544 :
29545 : static void SubdivisionSurface_Del(GF_Node *node)
29546 : {
29547 0 : M_SubdivisionSurface *p = (M_SubdivisionSurface *) node;
29548 0 : gf_sg_mfint32_del(p->set_colorIndex);
29549 0 : gf_sg_mfint32_del(p->set_coordIndex);
29550 0 : gf_sg_mfint32_del(p->set_cornerVertexIndex);
29551 0 : gf_sg_mfint32_del(p->set_creaseEdgeIndex);
29552 0 : gf_sg_mfint32_del(p->set_creaseVertexIndex);
29553 0 : gf_sg_mfint32_del(p->set_dartVertexIndex);
29554 0 : gf_sg_mfint32_del(p->set_texCoordIndex);
29555 0 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
29556 0 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
29557 0 : gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
29558 0 : gf_node_unregister_children((GF_Node *) p, p->sectors);
29559 0 : gf_sg_mfint32_del(p->invisibleEdgeIndex);
29560 0 : gf_sg_mfint32_del(p->colorIndex);
29561 0 : gf_sg_mfint32_del(p->coordIndex);
29562 0 : gf_sg_mfint32_del(p->cornerVertexIndex);
29563 0 : gf_sg_mfint32_del(p->creaseEdgeIndex);
29564 0 : gf_sg_mfint32_del(p->creaseVertexIndex);
29565 0 : gf_sg_mfint32_del(p->dartVertexIndex);
29566 0 : gf_sg_mfint32_del(p->texCoordIndex);
29567 0 : gf_node_free((GF_Node *) p);
29568 0 : }
29569 :
29570 : static const u16 SubdivisionSurface_Def2All[] = { 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25};
29571 : static const u16 SubdivisionSurface_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
29572 : static const u16 SubdivisionSurface_Out2All[] = { 7, 8, 9, 10, 11, 12, 13};
29573 :
29574 : static u32 SubdivisionSurface_get_field_count(GF_Node *node, u8 IndexMode)
29575 : {
29576 0 : switch(IndexMode) {
29577 : case GF_SG_FIELD_CODING_IN:
29578 0 : return 14;
29579 : case GF_SG_FIELD_CODING_DEF:
29580 0 : return 19;
29581 : case GF_SG_FIELD_CODING_OUT:
29582 0 : return 7;
29583 : case GF_SG_FIELD_CODING_DYN:
29584 0 : return 0;
29585 : default:
29586 0 : return 26;
29587 : }
29588 0 : }
29589 :
29590 : static GF_Err SubdivisionSurface_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
29591 : {
29592 0 : switch(IndexMode) {
29593 : case GF_SG_FIELD_CODING_IN:
29594 0 : *allField = SubdivisionSurface_In2All[inField];
29595 0 : return GF_OK;
29596 : case GF_SG_FIELD_CODING_DEF:
29597 0 : *allField = SubdivisionSurface_Def2All[inField];
29598 0 : return GF_OK;
29599 : case GF_SG_FIELD_CODING_OUT:
29600 0 : *allField = SubdivisionSurface_Out2All[inField];
29601 0 : return GF_OK;
29602 : default:
29603 0 : return GF_BAD_PARAM;
29604 : }
29605 0 : }
29606 : static GF_Err SubdivisionSurface_get_field(GF_Node *node, GF_FieldInfo *info)
29607 : {
29608 0 : switch (info->fieldIndex) {
29609 : case 0:
29610 0 : info->name = "set_colorIndex";
29611 0 : info->eventType = GF_SG_EVENT_IN;
29612 0 : info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_colorIndex;
29613 0 : info->fieldType = GF_SG_VRML_MFINT32;
29614 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->set_colorIndex;
29615 0 : return GF_OK;
29616 : case 1:
29617 0 : info->name = "set_coordIndex";
29618 0 : info->eventType = GF_SG_EVENT_IN;
29619 0 : info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_coordIndex;
29620 0 : info->fieldType = GF_SG_VRML_MFINT32;
29621 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->set_coordIndex;
29622 0 : return GF_OK;
29623 : case 2:
29624 0 : info->name = "set_cornerVertexIndex";
29625 0 : info->eventType = GF_SG_EVENT_IN;
29626 0 : info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_cornerVertexIndex;
29627 0 : info->fieldType = GF_SG_VRML_MFINT32;
29628 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->set_cornerVertexIndex;
29629 0 : return GF_OK;
29630 : case 3:
29631 0 : info->name = "set_creaseEdgeIndex";
29632 0 : info->eventType = GF_SG_EVENT_IN;
29633 0 : info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_creaseEdgeIndex;
29634 0 : info->fieldType = GF_SG_VRML_MFINT32;
29635 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->set_creaseEdgeIndex;
29636 0 : return GF_OK;
29637 : case 4:
29638 0 : info->name = "set_creaseVertexIndex";
29639 0 : info->eventType = GF_SG_EVENT_IN;
29640 0 : info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_creaseVertexIndex;
29641 0 : info->fieldType = GF_SG_VRML_MFINT32;
29642 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->set_creaseVertexIndex;
29643 0 : return GF_OK;
29644 : case 5:
29645 0 : info->name = "set_dartVertexIndex";
29646 0 : info->eventType = GF_SG_EVENT_IN;
29647 0 : info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_dartVertexIndex;
29648 0 : info->fieldType = GF_SG_VRML_MFINT32;
29649 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->set_dartVertexIndex;
29650 0 : return GF_OK;
29651 : case 6:
29652 0 : info->name = "set_texCoordIndex";
29653 0 : info->eventType = GF_SG_EVENT_IN;
29654 0 : info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_texCoordIndex;
29655 0 : info->fieldType = GF_SG_VRML_MFINT32;
29656 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->set_texCoordIndex;
29657 0 : return GF_OK;
29658 : case 7:
29659 0 : info->name = "color";
29660 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29661 0 : info->fieldType = GF_SG_VRML_SFNODE;
29662 0 : info->NDTtype = NDT_SFColorNode;
29663 0 : info->far_ptr = & ((M_SubdivisionSurface *)node)->color;
29664 0 : return GF_OK;
29665 : case 8:
29666 0 : info->name = "coord";
29667 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29668 0 : info->fieldType = GF_SG_VRML_SFNODE;
29669 0 : info->NDTtype = NDT_SFCoordinateNode;
29670 0 : info->far_ptr = & ((M_SubdivisionSurface *)node)->coord;
29671 0 : return GF_OK;
29672 : case 9:
29673 0 : info->name = "texCoord";
29674 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29675 0 : info->fieldType = GF_SG_VRML_SFNODE;
29676 0 : info->NDTtype = NDT_SFTextureCoordinateNode;
29677 0 : info->far_ptr = & ((M_SubdivisionSurface *)node)->texCoord;
29678 0 : return GF_OK;
29679 : case 10:
29680 0 : info->name = "sectors";
29681 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29682 0 : info->fieldType = GF_SG_VRML_MFNODE;
29683 0 : info->NDTtype = NDT_SFSubdivSurfaceSectorNode;
29684 0 : info->far_ptr = & ((M_SubdivisionSurface *)node)->sectors;
29685 0 : return GF_OK;
29686 : case 11:
29687 0 : info->name = "subdivisionLevel";
29688 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29689 0 : info->fieldType = GF_SG_VRML_SFINT32;
29690 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->subdivisionLevel;
29691 0 : return GF_OK;
29692 : case 12:
29693 0 : info->name = "subdivisionType";
29694 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29695 0 : info->fieldType = GF_SG_VRML_SFINT32;
29696 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->subdivisionType;
29697 0 : return GF_OK;
29698 : case 13:
29699 0 : info->name = "subdivisionSubType";
29700 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29701 0 : info->fieldType = GF_SG_VRML_SFINT32;
29702 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->subdivisionSubType;
29703 0 : return GF_OK;
29704 : case 14:
29705 0 : info->name = "invisibleEdgeIndex";
29706 0 : info->eventType = GF_SG_EVENT_FIELD;
29707 0 : info->fieldType = GF_SG_VRML_MFINT32;
29708 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->invisibleEdgeIndex;
29709 0 : return GF_OK;
29710 : case 15:
29711 0 : info->name = "ccw";
29712 0 : info->eventType = GF_SG_EVENT_FIELD;
29713 0 : info->fieldType = GF_SG_VRML_SFBOOL;
29714 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->ccw;
29715 0 : return GF_OK;
29716 : case 16:
29717 0 : info->name = "colorIndex";
29718 0 : info->eventType = GF_SG_EVENT_FIELD;
29719 0 : info->fieldType = GF_SG_VRML_MFINT32;
29720 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->colorIndex;
29721 0 : return GF_OK;
29722 : case 17:
29723 0 : info->name = "colorPerVertex";
29724 0 : info->eventType = GF_SG_EVENT_FIELD;
29725 0 : info->fieldType = GF_SG_VRML_SFBOOL;
29726 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->colorPerVertex;
29727 0 : return GF_OK;
29728 : case 18:
29729 0 : info->name = "convex";
29730 0 : info->eventType = GF_SG_EVENT_FIELD;
29731 0 : info->fieldType = GF_SG_VRML_SFBOOL;
29732 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->convex;
29733 0 : return GF_OK;
29734 : case 19:
29735 0 : info->name = "coordIndex";
29736 0 : info->eventType = GF_SG_EVENT_FIELD;
29737 0 : info->fieldType = GF_SG_VRML_MFINT32;
29738 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->coordIndex;
29739 0 : return GF_OK;
29740 : case 20:
29741 0 : info->name = "cornerVertexIndex";
29742 0 : info->eventType = GF_SG_EVENT_FIELD;
29743 0 : info->fieldType = GF_SG_VRML_MFINT32;
29744 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->cornerVertexIndex;
29745 0 : return GF_OK;
29746 : case 21:
29747 0 : info->name = "creaseEdgeIndex";
29748 0 : info->eventType = GF_SG_EVENT_FIELD;
29749 0 : info->fieldType = GF_SG_VRML_MFINT32;
29750 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->creaseEdgeIndex;
29751 0 : return GF_OK;
29752 : case 22:
29753 0 : info->name = "creaseVertexIndex";
29754 0 : info->eventType = GF_SG_EVENT_FIELD;
29755 0 : info->fieldType = GF_SG_VRML_MFINT32;
29756 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->creaseVertexIndex;
29757 0 : return GF_OK;
29758 : case 23:
29759 0 : info->name = "dartVertexIndex";
29760 0 : info->eventType = GF_SG_EVENT_FIELD;
29761 0 : info->fieldType = GF_SG_VRML_MFINT32;
29762 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->dartVertexIndex;
29763 0 : return GF_OK;
29764 : case 24:
29765 0 : info->name = "solid";
29766 0 : info->eventType = GF_SG_EVENT_FIELD;
29767 0 : info->fieldType = GF_SG_VRML_SFBOOL;
29768 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->solid;
29769 0 : return GF_OK;
29770 : case 25:
29771 0 : info->name = "texCoordIndex";
29772 0 : info->eventType = GF_SG_EVENT_FIELD;
29773 0 : info->fieldType = GF_SG_VRML_MFINT32;
29774 0 : info->far_ptr = & ((M_SubdivisionSurface *) node)->texCoordIndex;
29775 0 : return GF_OK;
29776 : default:
29777 0 : return GF_BAD_PARAM;
29778 : }
29779 0 : }
29780 :
29781 :
29782 : static s32 SubdivisionSurface_get_field_index_by_name(char *name)
29783 : {
29784 0 : if (!strcmp("set_colorIndex", name)) return 0;
29785 0 : if (!strcmp("set_coordIndex", name)) return 1;
29786 0 : if (!strcmp("set_cornerVertexIndex", name)) return 2;
29787 0 : if (!strcmp("set_creaseEdgeIndex", name)) return 3;
29788 0 : if (!strcmp("set_creaseVertexIndex", name)) return 4;
29789 0 : if (!strcmp("set_dartVertexIndex", name)) return 5;
29790 0 : if (!strcmp("set_texCoordIndex", name)) return 6;
29791 0 : if (!strcmp("color", name)) return 7;
29792 0 : if (!strcmp("coord", name)) return 8;
29793 0 : if (!strcmp("texCoord", name)) return 9;
29794 0 : if (!strcmp("sectors", name)) return 10;
29795 0 : if (!strcmp("subdivisionLevel", name)) return 11;
29796 0 : if (!strcmp("subdivisionType", name)) return 12;
29797 0 : if (!strcmp("subdivisionSubType", name)) return 13;
29798 0 : if (!strcmp("invisibleEdgeIndex", name)) return 14;
29799 0 : if (!strcmp("ccw", name)) return 15;
29800 0 : if (!strcmp("colorIndex", name)) return 16;
29801 0 : if (!strcmp("colorPerVertex", name)) return 17;
29802 0 : if (!strcmp("convex", name)) return 18;
29803 0 : if (!strcmp("coordIndex", name)) return 19;
29804 0 : if (!strcmp("cornerVertexIndex", name)) return 20;
29805 0 : if (!strcmp("creaseEdgeIndex", name)) return 21;
29806 0 : if (!strcmp("creaseVertexIndex", name)) return 22;
29807 0 : if (!strcmp("dartVertexIndex", name)) return 23;
29808 0 : if (!strcmp("solid", name)) return 24;
29809 0 : if (!strcmp("texCoordIndex", name)) return 25;
29810 0 : return -1;
29811 0 : }
29812 : static Bool SubdivisionSurface_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
29813 : {
29814 0 : switch (FieldIndex) {
29815 : case 12:
29816 0 : *AType = 0;
29817 0 : *QType = 13;
29818 0 : *QT13_bits = 2;
29819 0 : *b_min = FLT2FIX(0);
29820 0 : *b_max = FLT2FIX(3);
29821 0 : return 1;
29822 : case 13:
29823 0 : *AType = 0;
29824 0 : *QType = 13;
29825 0 : *QT13_bits = 2;
29826 0 : *b_min = FLT2FIX(0);
29827 0 : *b_max = FLT2FIX(3);
29828 0 : return 1;
29829 : default:
29830 0 : return 0;
29831 : }
29832 0 : }
29833 :
29834 :
29835 :
29836 : GF_Node *SubdivisionSurface_Create()
29837 : {
29838 : M_SubdivisionSurface *p;
29839 0 : GF_SAFEALLOC(p, M_SubdivisionSurface);
29840 0 : if(!p) return NULL;
29841 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SubdivisionSurface);
29842 :
29843 : /*default field values*/
29844 0 : p->subdivisionLevel = 0;
29845 0 : p->subdivisionType = 0;
29846 0 : p->subdivisionSubType = 0;
29847 0 : p->ccw = 1;
29848 0 : p->colorPerVertex = 1;
29849 0 : p->convex = 1;
29850 0 : p->solid = 1;
29851 0 : return (GF_Node *)p;
29852 0 : }
29853 :
29854 :
29855 : /*
29856 : SubdivSurfaceSector Node deletion
29857 : */
29858 :
29859 : static void SubdivSurfaceSector_Del(GF_Node *node)
29860 : {
29861 0 : M_SubdivSurfaceSector *p = (M_SubdivSurfaceSector *) node;
29862 0 : gf_node_free((GF_Node *) p);
29863 0 : }
29864 :
29865 : static const u16 SubdivSurfaceSector_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
29866 : static const u16 SubdivSurfaceSector_In2All[] = { 0, 1, 2, 3, 4};
29867 : static const u16 SubdivSurfaceSector_Out2All[] = { 0, 1, 2, 3, 4};
29868 :
29869 : static u32 SubdivSurfaceSector_get_field_count(GF_Node *node, u8 IndexMode)
29870 : {
29871 0 : switch(IndexMode) {
29872 : case GF_SG_FIELD_CODING_IN:
29873 0 : return 5;
29874 : case GF_SG_FIELD_CODING_DEF:
29875 0 : return 7;
29876 : case GF_SG_FIELD_CODING_OUT:
29877 0 : return 5;
29878 : case GF_SG_FIELD_CODING_DYN:
29879 0 : return 0;
29880 : default:
29881 0 : return 7;
29882 : }
29883 0 : }
29884 :
29885 : static GF_Err SubdivSurfaceSector_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
29886 : {
29887 0 : switch(IndexMode) {
29888 : case GF_SG_FIELD_CODING_IN:
29889 0 : *allField = SubdivSurfaceSector_In2All[inField];
29890 0 : return GF_OK;
29891 : case GF_SG_FIELD_CODING_DEF:
29892 0 : *allField = SubdivSurfaceSector_Def2All[inField];
29893 0 : return GF_OK;
29894 : case GF_SG_FIELD_CODING_OUT:
29895 0 : *allField = SubdivSurfaceSector_Out2All[inField];
29896 0 : return GF_OK;
29897 : default:
29898 0 : return GF_BAD_PARAM;
29899 : }
29900 0 : }
29901 : static GF_Err SubdivSurfaceSector_get_field(GF_Node *node, GF_FieldInfo *info)
29902 : {
29903 0 : switch (info->fieldIndex) {
29904 : case 0:
29905 0 : info->name = "flatness";
29906 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29907 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
29908 0 : info->far_ptr = & ((M_SubdivSurfaceSector *) node)->flatness;
29909 0 : return GF_OK;
29910 : case 1:
29911 0 : info->name = "normal";
29912 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29913 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
29914 0 : info->far_ptr = & ((M_SubdivSurfaceSector *) node)->normal;
29915 0 : return GF_OK;
29916 : case 2:
29917 0 : info->name = "normalTension";
29918 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29919 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
29920 0 : info->far_ptr = & ((M_SubdivSurfaceSector *) node)->normalTension;
29921 0 : return GF_OK;
29922 : case 3:
29923 0 : info->name = "tag";
29924 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29925 0 : info->fieldType = GF_SG_VRML_SFINT32;
29926 0 : info->far_ptr = & ((M_SubdivSurfaceSector *) node)->_tag;
29927 0 : return GF_OK;
29928 : case 4:
29929 0 : info->name = "theta";
29930 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29931 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
29932 0 : info->far_ptr = & ((M_SubdivSurfaceSector *) node)->theta;
29933 0 : return GF_OK;
29934 : case 5:
29935 0 : info->name = "faceIndex";
29936 0 : info->eventType = GF_SG_EVENT_FIELD;
29937 0 : info->fieldType = GF_SG_VRML_SFINT32;
29938 0 : info->far_ptr = & ((M_SubdivSurfaceSector *) node)->faceIndex;
29939 0 : return GF_OK;
29940 : case 6:
29941 0 : info->name = "vertexIndex";
29942 0 : info->eventType = GF_SG_EVENT_FIELD;
29943 0 : info->fieldType = GF_SG_VRML_SFINT32;
29944 0 : info->far_ptr = & ((M_SubdivSurfaceSector *) node)->vertexIndex;
29945 0 : return GF_OK;
29946 : default:
29947 0 : return GF_BAD_PARAM;
29948 : }
29949 0 : }
29950 :
29951 :
29952 : static s32 SubdivSurfaceSector_get_field_index_by_name(char *name)
29953 : {
29954 0 : if (!strcmp("flatness", name)) return 0;
29955 0 : if (!strcmp("normal", name)) return 1;
29956 0 : if (!strcmp("normalTension", name)) return 2;
29957 0 : if (!strcmp("tag", name)) return 3;
29958 0 : if (!strcmp("theta", name)) return 4;
29959 0 : if (!strcmp("faceIndex", name)) return 5;
29960 0 : if (!strcmp("vertexIndex", name)) return 6;
29961 0 : return -1;
29962 0 : }
29963 : static Bool SubdivSurfaceSector_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
29964 : {
29965 0 : switch (FieldIndex) {
29966 : case 0:
29967 0 : *AType = 0;
29968 0 : *QType = 7;
29969 0 : *b_min = FLT2FIX(0);
29970 0 : *b_max = FLT2FIX(1);
29971 0 : return 1;
29972 : case 1:
29973 0 : *AType = 0;
29974 0 : *QType = 9;
29975 0 : return 1;
29976 : case 2:
29977 0 : *AType = 0;
29978 0 : *QType = 7;
29979 0 : *b_min = FLT2FIX(0);
29980 0 : *b_max = FLT2FIX(1);
29981 0 : return 1;
29982 : case 3:
29983 0 : *AType = 0;
29984 0 : *QType = 13;
29985 0 : *QT13_bits = 2;
29986 0 : *b_min = FLT2FIX(0);
29987 0 : *b_max = FLT2FIX(2);
29988 0 : return 1;
29989 : case 4:
29990 0 : *AType = 0;
29991 0 : *QType = 6;
29992 0 : *b_min = FLT2FIX(0);
29993 0 : *b_max = FLT2FIX(6.2831853);
29994 0 : return 1;
29995 : case 5:
29996 0 : *AType = 0;
29997 0 : *QType = 14;
29998 0 : return 1;
29999 : case 6:
30000 0 : *AType = 0;
30001 0 : *QType = 14;
30002 0 : return 1;
30003 : default:
30004 0 : return 0;
30005 : }
30006 0 : }
30007 :
30008 :
30009 :
30010 : GF_Node *SubdivSurfaceSector_Create()
30011 : {
30012 : M_SubdivSurfaceSector *p;
30013 0 : GF_SAFEALLOC(p, M_SubdivSurfaceSector);
30014 0 : if(!p) return NULL;
30015 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SubdivSurfaceSector);
30016 :
30017 : /*default field values*/
30018 0 : p->flatness = FLT2FIX(0);
30019 0 : p->normal.x = FLT2FIX(0);
30020 0 : p->normal.y = FLT2FIX(0);
30021 0 : p->normal.z = FLT2FIX(0);
30022 0 : p->normalTension = FLT2FIX(0);
30023 0 : p->_tag = 0;
30024 0 : p->theta = FLT2FIX(0);
30025 0 : p->faceIndex = 0;
30026 0 : p->vertexIndex = 0;
30027 0 : return (GF_Node *)p;
30028 0 : }
30029 :
30030 :
30031 : /*
30032 : WaveletSubdivisionSurface Node deletion
30033 : */
30034 :
30035 : static void WaveletSubdivisionSurface_Del(GF_Node *node)
30036 : {
30037 0 : M_WaveletSubdivisionSurface *p = (M_WaveletSubdivisionSurface *) node;
30038 0 : gf_node_unregister((GF_Node *) p->baseMesh, (GF_Node *) p);
30039 0 : gf_node_free((GF_Node *) p);
30040 0 : }
30041 :
30042 : static const u16 WaveletSubdivisionSurface_Def2All[] = { 0, 1, 2, 3};
30043 : static const u16 WaveletSubdivisionSurface_In2All[] = { 0, 1, 2, 3};
30044 : static const u16 WaveletSubdivisionSurface_Out2All[] = { 0, 1, 2, 3};
30045 :
30046 : static u32 WaveletSubdivisionSurface_get_field_count(GF_Node *node, u8 IndexMode)
30047 : {
30048 0 : switch(IndexMode) {
30049 : case GF_SG_FIELD_CODING_IN:
30050 0 : return 4;
30051 : case GF_SG_FIELD_CODING_DEF:
30052 0 : return 4;
30053 : case GF_SG_FIELD_CODING_OUT:
30054 0 : return 4;
30055 : case GF_SG_FIELD_CODING_DYN:
30056 0 : return 0;
30057 : default:
30058 0 : return 4;
30059 : }
30060 0 : }
30061 :
30062 : static GF_Err WaveletSubdivisionSurface_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
30063 : {
30064 0 : switch(IndexMode) {
30065 : case GF_SG_FIELD_CODING_IN:
30066 0 : *allField = WaveletSubdivisionSurface_In2All[inField];
30067 0 : return GF_OK;
30068 : case GF_SG_FIELD_CODING_DEF:
30069 0 : *allField = WaveletSubdivisionSurface_Def2All[inField];
30070 0 : return GF_OK;
30071 : case GF_SG_FIELD_CODING_OUT:
30072 0 : *allField = WaveletSubdivisionSurface_Out2All[inField];
30073 0 : return GF_OK;
30074 : default:
30075 0 : return GF_BAD_PARAM;
30076 : }
30077 0 : }
30078 : static GF_Err WaveletSubdivisionSurface_get_field(GF_Node *node, GF_FieldInfo *info)
30079 : {
30080 0 : switch (info->fieldIndex) {
30081 : case 0:
30082 0 : info->name = "baseMesh";
30083 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30084 0 : info->fieldType = GF_SG_VRML_SFNODE;
30085 0 : info->NDTtype = NDT_SFGeometryNode;
30086 0 : info->far_ptr = & ((M_WaveletSubdivisionSurface *)node)->baseMesh;
30087 0 : return GF_OK;
30088 : case 1:
30089 0 : info->name = "fieldOfView";
30090 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30091 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
30092 0 : info->far_ptr = & ((M_WaveletSubdivisionSurface *) node)->fieldOfView;
30093 0 : return GF_OK;
30094 : case 2:
30095 0 : info->name = "frequency";
30096 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30097 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
30098 0 : info->far_ptr = & ((M_WaveletSubdivisionSurface *) node)->frequency;
30099 0 : return GF_OK;
30100 : case 3:
30101 0 : info->name = "quality";
30102 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30103 0 : info->fieldType = GF_SG_VRML_SFINT32;
30104 0 : info->far_ptr = & ((M_WaveletSubdivisionSurface *) node)->quality;
30105 0 : return GF_OK;
30106 : default:
30107 0 : return GF_BAD_PARAM;
30108 : }
30109 0 : }
30110 :
30111 :
30112 : static s32 WaveletSubdivisionSurface_get_field_index_by_name(char *name)
30113 : {
30114 0 : if (!strcmp("baseMesh", name)) return 0;
30115 0 : if (!strcmp("fieldOfView", name)) return 1;
30116 0 : if (!strcmp("frequency", name)) return 2;
30117 0 : if (!strcmp("quality", name)) return 3;
30118 0 : return -1;
30119 0 : }
30120 : static Bool WaveletSubdivisionSurface_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
30121 : {
30122 : switch (FieldIndex) {
30123 : default:
30124 0 : return 0;
30125 : }
30126 : }
30127 :
30128 :
30129 :
30130 : GF_Node *WaveletSubdivisionSurface_Create()
30131 : {
30132 : M_WaveletSubdivisionSurface *p;
30133 0 : GF_SAFEALLOC(p, M_WaveletSubdivisionSurface);
30134 0 : if(!p) return NULL;
30135 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_WaveletSubdivisionSurface);
30136 :
30137 : /*default field values*/
30138 0 : p->fieldOfView = FLT2FIX(0.785398);
30139 0 : p->frequency = FLT2FIX(1.0);
30140 0 : p->quality = 1;
30141 0 : return (GF_Node *)p;
30142 0 : }
30143 :
30144 :
30145 : /*
30146 : Clipper2D Node deletion
30147 : */
30148 :
30149 : static void Clipper2D_Del(GF_Node *node)
30150 : {
30151 72 : M_Clipper2D *p = (M_Clipper2D *) node;
30152 36 : gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
30153 36 : gf_node_unregister((GF_Node *) p->transform, (GF_Node *) p);
30154 36 : gf_sg_vrml_parent_destroy((GF_Node *) p);
30155 36 : gf_node_free((GF_Node *) p);
30156 36 : }
30157 :
30158 : static const u16 Clipper2D_Def2All[] = { 2, 3, 4, 5, 6};
30159 : static const u16 Clipper2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
30160 : static const u16 Clipper2D_Out2All[] = { 2, 3, 4, 5, 6};
30161 :
30162 : static u32 Clipper2D_get_field_count(GF_Node *node, u8 IndexMode)
30163 : {
30164 172 : switch(IndexMode) {
30165 : case GF_SG_FIELD_CODING_IN:
30166 54 : return 7;
30167 : case GF_SG_FIELD_CODING_DEF:
30168 18 : return 5;
30169 : case GF_SG_FIELD_CODING_OUT:
30170 0 : return 5;
30171 : case GF_SG_FIELD_CODING_DYN:
30172 0 : return 0;
30173 : default:
30174 14 : return 7;
30175 : }
30176 86 : }
30177 :
30178 : static GF_Err Clipper2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
30179 : {
30180 316 : switch(IndexMode) {
30181 : case GF_SG_FIELD_CODING_IN:
30182 98 : *allField = Clipper2D_In2All[inField];
30183 98 : return GF_OK;
30184 : case GF_SG_FIELD_CODING_DEF:
30185 60 : *allField = Clipper2D_Def2All[inField];
30186 60 : return GF_OK;
30187 : case GF_SG_FIELD_CODING_OUT:
30188 0 : *allField = Clipper2D_Out2All[inField];
30189 0 : return GF_OK;
30190 : default:
30191 0 : return GF_BAD_PARAM;
30192 : }
30193 158 : }
30194 : static GF_Err Clipper2D_get_field(GF_Node *node, GF_FieldInfo *info)
30195 : {
30196 728 : switch (info->fieldIndex) {
30197 : case 0:
30198 14 : info->name = "addChildren";
30199 14 : info->eventType = GF_SG_EVENT_IN;
30200 14 : info->on_event_in = ((M_Clipper2D *)node)->on_addChildren;
30201 14 : info->fieldType = GF_SG_VRML_MFNODE;
30202 14 : info->NDTtype = NDT_SF2DNode;
30203 14 : info->far_ptr = & ((M_Clipper2D *)node)->addChildren;
30204 14 : return GF_OK;
30205 : case 1:
30206 14 : info->name = "removeChildren";
30207 14 : info->eventType = GF_SG_EVENT_IN;
30208 14 : info->on_event_in = ((M_Clipper2D *)node)->on_removeChildren;
30209 14 : info->fieldType = GF_SG_VRML_MFNODE;
30210 14 : info->NDTtype = NDT_SF2DNode;
30211 14 : info->far_ptr = & ((M_Clipper2D *)node)->removeChildren;
30212 14 : return GF_OK;
30213 : case 2:
30214 48 : info->name = "children";
30215 48 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30216 48 : info->fieldType = GF_SG_VRML_MFNODE;
30217 48 : info->NDTtype = NDT_SF2DNode;
30218 48 : info->far_ptr = & ((M_Clipper2D *)node)->children;
30219 48 : return GF_OK;
30220 : case 3:
30221 48 : info->name = "geometry";
30222 48 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30223 48 : info->fieldType = GF_SG_VRML_SFNODE;
30224 48 : info->NDTtype = NDT_SFGeometryNode;
30225 48 : info->far_ptr = & ((M_Clipper2D *)node)->geometry;
30226 48 : return GF_OK;
30227 : case 4:
30228 126 : info->name = "inside";
30229 126 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30230 126 : info->fieldType = GF_SG_VRML_SFBOOL;
30231 126 : info->far_ptr = & ((M_Clipper2D *) node)->inside;
30232 126 : return GF_OK;
30233 : case 5:
30234 48 : info->name = "transform";
30235 48 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30236 48 : info->fieldType = GF_SG_VRML_SFNODE;
30237 48 : info->NDTtype = NDT_SF2DNode;
30238 48 : info->far_ptr = & ((M_Clipper2D *)node)->transform;
30239 48 : return GF_OK;
30240 : case 6:
30241 66 : info->name = "XOR";
30242 66 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30243 66 : info->fieldType = GF_SG_VRML_SFBOOL;
30244 66 : info->far_ptr = & ((M_Clipper2D *) node)->XOR;
30245 66 : return GF_OK;
30246 : default:
30247 0 : return GF_BAD_PARAM;
30248 : }
30249 364 : }
30250 :
30251 :
30252 : static s32 Clipper2D_get_field_index_by_name(char *name)
30253 : {
30254 112 : if (!strcmp("addChildren", name)) return 0;
30255 56 : if (!strcmp("removeChildren", name)) return 1;
30256 64 : if (!strcmp("children", name)) return 2;
30257 56 : if (!strcmp("geometry", name)) return 3;
30258 64 : if (!strcmp("inside", name)) return 4;
30259 24 : if (!strcmp("transform", name)) return 5;
30260 16 : if (!strcmp("XOR", name)) return 6;
30261 0 : return -1;
30262 56 : }
30263 : static Bool Clipper2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
30264 : {
30265 : switch (FieldIndex) {
30266 : default:
30267 0 : return 0;
30268 : }
30269 : }
30270 :
30271 :
30272 :
30273 : GF_Node *Clipper2D_Create()
30274 : {
30275 : M_Clipper2D *p;
30276 108 : GF_SAFEALLOC(p, M_Clipper2D);
30277 36 : if(!p) return NULL;
30278 36 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Clipper2D);
30279 36 : gf_sg_vrml_parent_setup((GF_Node *) p);
30280 :
30281 : /*default field values*/
30282 36 : p->inside = 1;
30283 36 : return (GF_Node *)p;
30284 36 : }
30285 :
30286 :
30287 : /*
30288 : ColorTransform Node deletion
30289 : */
30290 :
30291 : static void ColorTransform_Del(GF_Node *node)
30292 : {
30293 198 : M_ColorTransform *p = (M_ColorTransform *) node;
30294 99 : gf_sg_vrml_parent_destroy((GF_Node *) p);
30295 99 : gf_node_free((GF_Node *) p);
30296 99 : }
30297 :
30298 : static const u16 ColorTransform_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22};
30299 : static const u16 ColorTransform_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22};
30300 : static const u16 ColorTransform_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22};
30301 : static const u16 ColorTransform_Dyn2All[] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22};
30302 :
30303 : static u32 ColorTransform_get_field_count(GF_Node *node, u8 IndexMode)
30304 : {
30305 298 : switch(IndexMode) {
30306 : case GF_SG_FIELD_CODING_IN:
30307 54 : return 23;
30308 : case GF_SG_FIELD_CODING_DEF:
30309 44 : return 21;
30310 : case GF_SG_FIELD_CODING_OUT:
30311 0 : return 21;
30312 : case GF_SG_FIELD_CODING_DYN:
30313 0 : return 20;
30314 : default:
30315 51 : return 23;
30316 : }
30317 149 : }
30318 :
30319 : static GF_Err ColorTransform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
30320 : {
30321 988 : switch(IndexMode) {
30322 : case GF_SG_FIELD_CODING_IN:
30323 200 : *allField = ColorTransform_In2All[inField];
30324 200 : return GF_OK;
30325 : case GF_SG_FIELD_CODING_DEF:
30326 294 : *allField = ColorTransform_Def2All[inField];
30327 294 : return GF_OK;
30328 : case GF_SG_FIELD_CODING_OUT:
30329 0 : *allField = ColorTransform_Out2All[inField];
30330 0 : return GF_OK;
30331 : case GF_SG_FIELD_CODING_DYN:
30332 0 : *allField = ColorTransform_Dyn2All[inField];
30333 0 : return GF_OK;
30334 : default:
30335 0 : return GF_BAD_PARAM;
30336 : }
30337 494 : }
30338 : static GF_Err ColorTransform_get_field(GF_Node *node, GF_FieldInfo *info)
30339 : {
30340 5036 : switch (info->fieldIndex) {
30341 : case 0:
30342 44 : info->name = "addChildren";
30343 44 : info->eventType = GF_SG_EVENT_IN;
30344 44 : info->on_event_in = ((M_ColorTransform *)node)->on_addChildren;
30345 44 : info->fieldType = GF_SG_VRML_MFNODE;
30346 44 : info->NDTtype = NDT_SF3DNode;
30347 44 : info->far_ptr = & ((M_ColorTransform *)node)->addChildren;
30348 44 : return GF_OK;
30349 : case 1:
30350 44 : info->name = "removeChildren";
30351 44 : info->eventType = GF_SG_EVENT_IN;
30352 44 : info->on_event_in = ((M_ColorTransform *)node)->on_removeChildren;
30353 44 : info->fieldType = GF_SG_VRML_MFNODE;
30354 44 : info->NDTtype = NDT_SF3DNode;
30355 44 : info->far_ptr = & ((M_ColorTransform *)node)->removeChildren;
30356 44 : return GF_OK;
30357 : case 2:
30358 141 : info->name = "children";
30359 141 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30360 141 : info->fieldType = GF_SG_VRML_MFNODE;
30361 141 : info->NDTtype = NDT_SF3DNode;
30362 141 : info->far_ptr = & ((M_ColorTransform *)node)->children;
30363 141 : return GF_OK;
30364 : case 3:
30365 157 : info->name = "mrr";
30366 157 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30367 157 : info->fieldType = GF_SG_VRML_SFFLOAT;
30368 157 : info->far_ptr = & ((M_ColorTransform *) node)->mrr;
30369 157 : return GF_OK;
30370 : case 4:
30371 96 : info->name = "mrg";
30372 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30373 96 : info->fieldType = GF_SG_VRML_SFFLOAT;
30374 96 : info->far_ptr = & ((M_ColorTransform *) node)->mrg;
30375 96 : return GF_OK;
30376 : case 5:
30377 120 : info->name = "mrb";
30378 120 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30379 120 : info->fieldType = GF_SG_VRML_SFFLOAT;
30380 120 : info->far_ptr = & ((M_ColorTransform *) node)->mrb;
30381 120 : return GF_OK;
30382 : case 6:
30383 96 : info->name = "mra";
30384 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30385 96 : info->fieldType = GF_SG_VRML_SFFLOAT;
30386 96 : info->far_ptr = & ((M_ColorTransform *) node)->mra;
30387 96 : return GF_OK;
30388 : case 7:
30389 114 : info->name = "tr";
30390 114 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30391 114 : info->fieldType = GF_SG_VRML_SFFLOAT;
30392 114 : info->far_ptr = & ((M_ColorTransform *) node)->tr;
30393 114 : return GF_OK;
30394 : case 8:
30395 96 : info->name = "mgr";
30396 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30397 96 : info->fieldType = GF_SG_VRML_SFFLOAT;
30398 96 : info->far_ptr = & ((M_ColorTransform *) node)->mgr;
30399 96 : return GF_OK;
30400 : case 9:
30401 145 : info->name = "mgg";
30402 145 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30403 145 : info->fieldType = GF_SG_VRML_SFFLOAT;
30404 145 : info->far_ptr = & ((M_ColorTransform *) node)->mgg;
30405 145 : return GF_OK;
30406 : case 10:
30407 96 : info->name = "mgb";
30408 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30409 96 : info->fieldType = GF_SG_VRML_SFFLOAT;
30410 96 : info->far_ptr = & ((M_ColorTransform *) node)->mgb;
30411 96 : return GF_OK;
30412 : case 11:
30413 96 : info->name = "mga";
30414 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30415 96 : info->fieldType = GF_SG_VRML_SFFLOAT;
30416 96 : info->far_ptr = & ((M_ColorTransform *) node)->mga;
30417 96 : return GF_OK;
30418 : case 12:
30419 110 : info->name = "tg";
30420 110 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30421 110 : info->fieldType = GF_SG_VRML_SFFLOAT;
30422 110 : info->far_ptr = & ((M_ColorTransform *) node)->tg;
30423 110 : return GF_OK;
30424 : case 13:
30425 96 : info->name = "mbr";
30426 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30427 96 : info->fieldType = GF_SG_VRML_SFFLOAT;
30428 96 : info->far_ptr = & ((M_ColorTransform *) node)->mbr;
30429 96 : return GF_OK;
30430 : case 14:
30431 96 : info->name = "mbg";
30432 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30433 96 : info->fieldType = GF_SG_VRML_SFFLOAT;
30434 96 : info->far_ptr = & ((M_ColorTransform *) node)->mbg;
30435 96 : return GF_OK;
30436 : case 15:
30437 171 : info->name = "mbb";
30438 171 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30439 171 : info->fieldType = GF_SG_VRML_SFFLOAT;
30440 171 : info->far_ptr = & ((M_ColorTransform *) node)->mbb;
30441 171 : return GF_OK;
30442 : case 16:
30443 96 : info->name = "mba";
30444 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30445 96 : info->fieldType = GF_SG_VRML_SFFLOAT;
30446 96 : info->far_ptr = & ((M_ColorTransform *) node)->mba;
30447 96 : return GF_OK;
30448 : case 17:
30449 110 : info->name = "tb";
30450 110 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30451 110 : info->fieldType = GF_SG_VRML_SFFLOAT;
30452 110 : info->far_ptr = & ((M_ColorTransform *) node)->tb;
30453 110 : return GF_OK;
30454 : case 18:
30455 96 : info->name = "mar";
30456 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30457 96 : info->fieldType = GF_SG_VRML_SFFLOAT;
30458 96 : info->far_ptr = & ((M_ColorTransform *) node)->mar;
30459 96 : return GF_OK;
30460 : case 19:
30461 96 : info->name = "mag";
30462 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30463 96 : info->fieldType = GF_SG_VRML_SFFLOAT;
30464 96 : info->far_ptr = & ((M_ColorTransform *) node)->mag;
30465 96 : return GF_OK;
30466 : case 20:
30467 96 : info->name = "mab";
30468 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30469 96 : info->fieldType = GF_SG_VRML_SFFLOAT;
30470 96 : info->far_ptr = & ((M_ColorTransform *) node)->mab;
30471 96 : return GF_OK;
30472 : case 21:
30473 157 : info->name = "maa";
30474 157 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30475 157 : info->fieldType = GF_SG_VRML_SFFLOAT;
30476 157 : info->far_ptr = & ((M_ColorTransform *) node)->maa;
30477 157 : return GF_OK;
30478 : case 22:
30479 149 : info->name = "ta";
30480 149 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30481 149 : info->fieldType = GF_SG_VRML_SFFLOAT;
30482 149 : info->far_ptr = & ((M_ColorTransform *) node)->ta;
30483 149 : return GF_OK;
30484 : default:
30485 0 : return GF_BAD_PARAM;
30486 : }
30487 2518 : }
30488 :
30489 :
30490 : static s32 ColorTransform_get_field_index_by_name(char *name)
30491 : {
30492 288 : if (!strcmp("addChildren", name)) return 0;
30493 144 : if (!strcmp("removeChildren", name)) return 1;
30494 168 : if (!strcmp("children", name)) return 2;
30495 140 : if (!strcmp("mrr", name)) return 3;
30496 100 : if (!strcmp("mrg", name)) return 4;
30497 112 : if (!strcmp("mrb", name)) return 5;
30498 88 : if (!strcmp("mra", name)) return 6;
30499 96 : if (!strcmp("tr", name)) return 7;
30500 80 : if (!strcmp("mgr", name)) return 8;
30501 96 : if (!strcmp("mgg", name)) return 9;
30502 64 : if (!strcmp("mgb", name)) return 10;
30503 64 : if (!strcmp("mga", name)) return 11;
30504 68 : if (!strcmp("tg", name)) return 12;
30505 60 : if (!strcmp("mbr", name)) return 13;
30506 60 : if (!strcmp("mbg", name)) return 14;
30507 80 : if (!strcmp("mbb", name)) return 15;
30508 40 : if (!strcmp("mba", name)) return 16;
30509 44 : if (!strcmp("tb", name)) return 17;
30510 36 : if (!strcmp("mar", name)) return 18;
30511 36 : if (!strcmp("mag", name)) return 19;
30512 36 : if (!strcmp("mab", name)) return 20;
30513 56 : if (!strcmp("maa", name)) return 21;
30514 32 : if (!strcmp("ta", name)) return 22;
30515 0 : return -1;
30516 144 : }
30517 : static Bool ColorTransform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
30518 : {
30519 0 : switch (FieldIndex) {
30520 : case 3:
30521 0 : *AType = 7;
30522 0 : *QType = 7;
30523 0 : *b_min = FIX_MIN;
30524 0 : *b_max = FIX_MAX;
30525 0 : return 1;
30526 : case 4:
30527 0 : *AType = 7;
30528 0 : *QType = 7;
30529 0 : *b_min = FIX_MIN;
30530 0 : *b_max = FIX_MAX;
30531 0 : return 1;
30532 : case 5:
30533 0 : *AType = 7;
30534 0 : *QType = 7;
30535 0 : *b_min = FIX_MIN;
30536 0 : *b_max = FIX_MAX;
30537 0 : return 1;
30538 : case 6:
30539 0 : *AType = 7;
30540 0 : *QType = 7;
30541 0 : *b_min = FIX_MIN;
30542 0 : *b_max = FIX_MAX;
30543 0 : return 1;
30544 : case 7:
30545 0 : *AType = 7;
30546 0 : *QType = 4;
30547 0 : *b_min = FIX_MIN;
30548 0 : *b_max = FIX_MAX;
30549 0 : return 1;
30550 : case 8:
30551 0 : *AType = 7;
30552 0 : *QType = 7;
30553 0 : *b_min = FIX_MIN;
30554 0 : *b_max = FIX_MAX;
30555 0 : return 1;
30556 : case 9:
30557 0 : *AType = 7;
30558 0 : *QType = 7;
30559 0 : *b_min = FIX_MIN;
30560 0 : *b_max = FIX_MAX;
30561 0 : return 1;
30562 : case 10:
30563 0 : *AType = 7;
30564 0 : *QType = 7;
30565 0 : *b_min = FIX_MIN;
30566 0 : *b_max = FIX_MAX;
30567 0 : return 1;
30568 : case 11:
30569 0 : *AType = 7;
30570 0 : *QType = 7;
30571 0 : *b_min = FIX_MIN;
30572 0 : *b_max = FIX_MAX;
30573 0 : return 1;
30574 : case 12:
30575 0 : *AType = 7;
30576 0 : *QType = 4;
30577 0 : *b_min = FIX_MIN;
30578 0 : *b_max = FIX_MAX;
30579 0 : return 1;
30580 : case 13:
30581 0 : *AType = 7;
30582 0 : *QType = 7;
30583 0 : *b_min = FIX_MIN;
30584 0 : *b_max = FIX_MAX;
30585 0 : return 1;
30586 : case 14:
30587 0 : *AType = 7;
30588 0 : *QType = 7;
30589 0 : *b_min = FIX_MIN;
30590 0 : *b_max = FIX_MAX;
30591 0 : return 1;
30592 : case 15:
30593 0 : *AType = 7;
30594 0 : *QType = 7;
30595 0 : *b_min = FIX_MIN;
30596 0 : *b_max = FIX_MAX;
30597 0 : return 1;
30598 : case 16:
30599 0 : *AType = 7;
30600 0 : *QType = 7;
30601 0 : *b_min = FIX_MIN;
30602 0 : *b_max = FIX_MAX;
30603 0 : return 1;
30604 : case 17:
30605 0 : *AType = 7;
30606 0 : *QType = 4;
30607 0 : *b_min = FIX_MIN;
30608 0 : *b_max = FIX_MAX;
30609 0 : return 1;
30610 : case 18:
30611 0 : *AType = 7;
30612 0 : *QType = 7;
30613 0 : *b_min = FIX_MIN;
30614 0 : *b_max = FIX_MAX;
30615 0 : return 1;
30616 : case 19:
30617 0 : *AType = 7;
30618 0 : *QType = 7;
30619 0 : *b_min = FIX_MIN;
30620 0 : *b_max = FIX_MAX;
30621 0 : return 1;
30622 : case 20:
30623 0 : *AType = 7;
30624 0 : *QType = 7;
30625 0 : *b_min = FIX_MIN;
30626 0 : *b_max = FIX_MAX;
30627 0 : return 1;
30628 : case 21:
30629 0 : *AType = 7;
30630 0 : *QType = 7;
30631 0 : *b_min = FIX_MIN;
30632 0 : *b_max = FIX_MAX;
30633 0 : return 1;
30634 : case 22:
30635 0 : *AType = 7;
30636 0 : *QType = 4;
30637 0 : *b_min = FIX_MIN;
30638 0 : *b_max = FIX_MAX;
30639 0 : return 1;
30640 : default:
30641 0 : return 0;
30642 : }
30643 0 : }
30644 :
30645 :
30646 :
30647 : GF_Node *ColorTransform_Create()
30648 : {
30649 : M_ColorTransform *p;
30650 297 : GF_SAFEALLOC(p, M_ColorTransform);
30651 99 : if(!p) return NULL;
30652 99 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ColorTransform);
30653 99 : gf_sg_vrml_parent_setup((GF_Node *) p);
30654 :
30655 : /*default field values*/
30656 99 : p->mrr = FLT2FIX(1);
30657 99 : p->mrg = FLT2FIX(0);
30658 99 : p->mrb = FLT2FIX(0);
30659 99 : p->mra = FLT2FIX(0);
30660 99 : p->tr = FLT2FIX(0);
30661 99 : p->mgr = FLT2FIX(0);
30662 99 : p->mgg = FLT2FIX(1);
30663 99 : p->mgb = FLT2FIX(0);
30664 99 : p->mga = FLT2FIX(0);
30665 99 : p->tg = FLT2FIX(0);
30666 99 : p->mbr = FLT2FIX(0);
30667 99 : p->mbg = FLT2FIX(0);
30668 99 : p->mbb = FLT2FIX(1);
30669 99 : p->mba = FLT2FIX(0);
30670 99 : p->tb = FLT2FIX(0);
30671 99 : p->mar = FLT2FIX(0);
30672 99 : p->mag = FLT2FIX(0);
30673 99 : p->mab = FLT2FIX(0);
30674 99 : p->maa = FLT2FIX(1);
30675 99 : p->ta = FLT2FIX(0);
30676 99 : return (GF_Node *)p;
30677 99 : }
30678 :
30679 :
30680 : /*
30681 : Ellipse Node deletion
30682 : */
30683 :
30684 : static void Ellipse_Del(GF_Node *node)
30685 : {
30686 72 : M_Ellipse *p = (M_Ellipse *) node;
30687 36 : gf_node_free((GF_Node *) p);
30688 36 : }
30689 :
30690 : static const u16 Ellipse_Def2All[] = { 0};
30691 : static const u16 Ellipse_In2All[] = { 0};
30692 : static const u16 Ellipse_Out2All[] = { 0};
30693 : static const u16 Ellipse_Dyn2All[] = { 0};
30694 :
30695 : static u32 Ellipse_get_field_count(GF_Node *node, u8 IndexMode)
30696 : {
30697 64 : switch(IndexMode) {
30698 : case GF_SG_FIELD_CODING_IN:
30699 0 : return 1;
30700 : case GF_SG_FIELD_CODING_DEF:
30701 18 : return 1;
30702 : case GF_SG_FIELD_CODING_OUT:
30703 0 : return 1;
30704 : case GF_SG_FIELD_CODING_DYN:
30705 0 : return 1;
30706 : default:
30707 14 : return 1;
30708 : }
30709 32 : }
30710 :
30711 : static GF_Err Ellipse_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
30712 : {
30713 28 : switch(IndexMode) {
30714 : case GF_SG_FIELD_CODING_IN:
30715 0 : *allField = Ellipse_In2All[inField];
30716 0 : return GF_OK;
30717 : case GF_SG_FIELD_CODING_DEF:
30718 14 : *allField = Ellipse_Def2All[inField];
30719 14 : return GF_OK;
30720 : case GF_SG_FIELD_CODING_OUT:
30721 0 : *allField = Ellipse_Out2All[inField];
30722 0 : return GF_OK;
30723 : case GF_SG_FIELD_CODING_DYN:
30724 0 : *allField = Ellipse_Dyn2All[inField];
30725 0 : return GF_OK;
30726 : default:
30727 0 : return GF_BAD_PARAM;
30728 : }
30729 14 : }
30730 : static GF_Err Ellipse_get_field(GF_Node *node, GF_FieldInfo *info)
30731 : {
30732 132 : switch (info->fieldIndex) {
30733 : case 0:
30734 66 : info->name = "radius";
30735 66 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30736 66 : info->fieldType = GF_SG_VRML_SFVEC2F;
30737 66 : info->far_ptr = & ((M_Ellipse *) node)->radius;
30738 66 : return GF_OK;
30739 : default:
30740 0 : return GF_BAD_PARAM;
30741 : }
30742 66 : }
30743 :
30744 :
30745 : static s32 Ellipse_get_field_index_by_name(char *name)
30746 : {
30747 24 : if (!strcmp("radius", name)) return 0;
30748 0 : return -1;
30749 8 : }
30750 : static Bool Ellipse_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
30751 : {
30752 0 : switch (FieldIndex) {
30753 : case 0:
30754 0 : *AType = 2;
30755 0 : *QType = 12;
30756 0 : *b_min = FLT2FIX(0);
30757 0 : *b_max = FIX_MAX;
30758 0 : return 1;
30759 : default:
30760 0 : return 0;
30761 : }
30762 0 : }
30763 :
30764 :
30765 :
30766 : GF_Node *Ellipse_Create()
30767 : {
30768 : M_Ellipse *p;
30769 108 : GF_SAFEALLOC(p, M_Ellipse);
30770 36 : if(!p) return NULL;
30771 36 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Ellipse);
30772 :
30773 : /*default field values*/
30774 36 : p->radius.x = FLT2FIX(1);
30775 36 : p->radius.y = FLT2FIX(1);
30776 36 : return (GF_Node *)p;
30777 36 : }
30778 :
30779 :
30780 : /*
30781 : LinearGradient Node deletion
30782 : */
30783 :
30784 : static void LinearGradient_Del(GF_Node *node)
30785 : {
30786 220 : M_LinearGradient *p = (M_LinearGradient *) node;
30787 110 : gf_sg_mffloat_del(p->key);
30788 110 : gf_sg_mfcolor_del(p->keyValue);
30789 110 : gf_sg_mffloat_del(p->opacity);
30790 110 : gf_node_unregister((GF_Node *) p->transform, (GF_Node *) p);
30791 110 : gf_node_free((GF_Node *) p);
30792 110 : }
30793 :
30794 : static const u16 LinearGradient_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
30795 : static const u16 LinearGradient_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
30796 : static const u16 LinearGradient_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
30797 : static const u16 LinearGradient_Dyn2All[] = { 0, 5};
30798 :
30799 : static u32 LinearGradient_get_field_count(GF_Node *node, u8 IndexMode)
30800 : {
30801 374 : switch(IndexMode) {
30802 : case GF_SG_FIELD_CODING_IN:
30803 99 : return 7;
30804 : case GF_SG_FIELD_CODING_DEF:
30805 45 : return 7;
30806 : case GF_SG_FIELD_CODING_OUT:
30807 0 : return 7;
30808 : case GF_SG_FIELD_CODING_DYN:
30809 0 : return 2;
30810 : default:
30811 43 : return 7;
30812 : }
30813 187 : }
30814 :
30815 : static GF_Err LinearGradient_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
30816 : {
30817 582 : switch(IndexMode) {
30818 : case GF_SG_FIELD_CODING_IN:
30819 141 : *allField = LinearGradient_In2All[inField];
30820 141 : return GF_OK;
30821 : case GF_SG_FIELD_CODING_DEF:
30822 150 : *allField = LinearGradient_Def2All[inField];
30823 150 : return GF_OK;
30824 : case GF_SG_FIELD_CODING_OUT:
30825 0 : *allField = LinearGradient_Out2All[inField];
30826 0 : return GF_OK;
30827 : case GF_SG_FIELD_CODING_DYN:
30828 0 : *allField = LinearGradient_Dyn2All[inField];
30829 0 : return GF_OK;
30830 : default:
30831 0 : return GF_BAD_PARAM;
30832 : }
30833 291 : }
30834 : static GF_Err LinearGradient_get_field(GF_Node *node, GF_FieldInfo *info)
30835 : {
30836 2350 : switch (info->fieldIndex) {
30837 : case 0:
30838 220 : info->name = "endPoint";
30839 220 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30840 220 : info->fieldType = GF_SG_VRML_SFVEC2F;
30841 220 : info->far_ptr = & ((M_LinearGradient *) node)->endPoint;
30842 220 : return GF_OK;
30843 : case 1:
30844 216 : info->name = "key";
30845 216 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30846 216 : info->fieldType = GF_SG_VRML_MFFLOAT;
30847 216 : info->far_ptr = & ((M_LinearGradient *) node)->key;
30848 216 : return GF_OK;
30849 : case 2:
30850 218 : info->name = "keyValue";
30851 218 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30852 218 : info->fieldType = GF_SG_VRML_MFCOLOR;
30853 218 : info->far_ptr = & ((M_LinearGradient *) node)->keyValue;
30854 218 : return GF_OK;
30855 : case 3:
30856 106 : info->name = "opacity";
30857 106 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30858 106 : info->fieldType = GF_SG_VRML_MFFLOAT;
30859 106 : info->far_ptr = & ((M_LinearGradient *) node)->opacity;
30860 106 : return GF_OK;
30861 : case 4:
30862 241 : info->name = "spreadMethod";
30863 241 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30864 241 : info->fieldType = GF_SG_VRML_SFINT32;
30865 241 : info->far_ptr = & ((M_LinearGradient *) node)->spreadMethod;
30866 241 : return GF_OK;
30867 : case 5:
30868 121 : info->name = "startPoint";
30869 121 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30870 121 : info->fieldType = GF_SG_VRML_SFVEC2F;
30871 121 : info->far_ptr = & ((M_LinearGradient *) node)->startPoint;
30872 121 : return GF_OK;
30873 : case 6:
30874 53 : info->name = "transform";
30875 53 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30876 53 : info->fieldType = GF_SG_VRML_SFNODE;
30877 53 : info->NDTtype = NDT_SF3DNode;
30878 53 : info->far_ptr = & ((M_LinearGradient *)node)->transform;
30879 53 : return GF_OK;
30880 : default:
30881 0 : return GF_BAD_PARAM;
30882 : }
30883 1175 : }
30884 :
30885 :
30886 : static s32 LinearGradient_get_field_index_by_name(char *name)
30887 : {
30888 408 : if (!strcmp("endPoint", name)) return 0;
30889 177 : if (!strcmp("key", name)) return 1;
30890 134 : if (!strcmp("keyValue", name)) return 2;
30891 40 : if (!strcmp("opacity", name)) return 3;
30892 76 : if (!strcmp("spreadMethod", name)) return 4;
30893 8 : if (!strcmp("startPoint", name)) return 5;
30894 0 : if (!strcmp("transform", name)) return 6;
30895 0 : return -1;
30896 180 : }
30897 : static Bool LinearGradient_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
30898 : {
30899 0 : switch (FieldIndex) {
30900 : case 0:
30901 0 : *AType = 2;
30902 0 : *QType = 5;
30903 0 : *b_min = FIX_MIN;
30904 0 : *b_max = FIX_MAX;
30905 0 : return 1;
30906 : case 1:
30907 0 : *AType = 0;
30908 0 : *QType = 8;
30909 0 : *b_min = FLT2FIX(0);
30910 0 : *b_max = FLT2FIX(1);
30911 0 : return 1;
30912 : case 2:
30913 0 : *AType = 0;
30914 0 : *QType = 4;
30915 0 : *b_min = FLT2FIX(0);
30916 0 : *b_max = FLT2FIX(1);
30917 0 : return 1;
30918 : case 3:
30919 0 : *AType = 0;
30920 0 : *QType = 7;
30921 0 : *b_min = FLT2FIX(0);
30922 0 : *b_max = FLT2FIX(1);
30923 0 : return 1;
30924 : case 4:
30925 0 : *AType = 0;
30926 0 : *QType = 13;
30927 0 : *QT13_bits = 2;
30928 0 : *b_min = FLT2FIX(0);
30929 0 : *b_max = FLT2FIX(2);
30930 0 : return 1;
30931 : case 5:
30932 0 : *AType = 2;
30933 0 : *QType = 5;
30934 0 : *b_min = FIX_MIN;
30935 0 : *b_max = FIX_MAX;
30936 0 : return 1;
30937 : default:
30938 0 : return 0;
30939 : }
30940 0 : }
30941 :
30942 :
30943 :
30944 : GF_Node *LinearGradient_Create()
30945 : {
30946 : M_LinearGradient *p;
30947 330 : GF_SAFEALLOC(p, M_LinearGradient);
30948 110 : if(!p) return NULL;
30949 110 : gf_node_setup((GF_Node *)p, TAG_MPEG4_LinearGradient);
30950 :
30951 : /*default field values*/
30952 110 : p->endPoint.x = FLT2FIX(1);
30953 110 : p->endPoint.y = FLT2FIX(0);
30954 110 : p->opacity.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
30955 110 : p->opacity.count = 1;
30956 110 : p->opacity.vals[0] = FLT2FIX(1);
30957 110 : p->spreadMethod = 0;
30958 110 : p->startPoint.x = FLT2FIX(0);
30959 110 : p->startPoint.y = FLT2FIX(0);
30960 110 : return (GF_Node *)p;
30961 110 : }
30962 :
30963 :
30964 : /*
30965 : PathLayout Node deletion
30966 : */
30967 :
30968 : static void PathLayout_Del(GF_Node *node)
30969 : {
30970 72 : M_PathLayout *p = (M_PathLayout *) node;
30971 36 : gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
30972 36 : gf_sg_mfint32_del(p->alignment);
30973 36 : gf_sg_vrml_parent_destroy((GF_Node *) p);
30974 36 : gf_node_free((GF_Node *) p);
30975 36 : }
30976 :
30977 : static const u16 PathLayout_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9};
30978 : static const u16 PathLayout_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
30979 : static const u16 PathLayout_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9};
30980 : static const u16 PathLayout_Dyn2All[] = { 5, 6};
30981 :
30982 : static u32 PathLayout_get_field_count(GF_Node *node, u8 IndexMode)
30983 : {
30984 244 : switch(IndexMode) {
30985 : case GF_SG_FIELD_CODING_IN:
30986 90 : return 10;
30987 : case GF_SG_FIELD_CODING_DEF:
30988 18 : return 8;
30989 : case GF_SG_FIELD_CODING_OUT:
30990 0 : return 8;
30991 : case GF_SG_FIELD_CODING_DYN:
30992 0 : return 2;
30993 : default:
30994 14 : return 10;
30995 : }
30996 122 : }
30997 :
30998 : static GF_Err PathLayout_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
30999 : {
31000 580 : switch(IndexMode) {
31001 : case GF_SG_FIELD_CODING_IN:
31002 218 : *allField = PathLayout_In2All[inField];
31003 218 : return GF_OK;
31004 : case GF_SG_FIELD_CODING_DEF:
31005 72 : *allField = PathLayout_Def2All[inField];
31006 72 : return GF_OK;
31007 : case GF_SG_FIELD_CODING_OUT:
31008 0 : *allField = PathLayout_Out2All[inField];
31009 0 : return GF_OK;
31010 : case GF_SG_FIELD_CODING_DYN:
31011 0 : *allField = PathLayout_Dyn2All[inField];
31012 0 : return GF_OK;
31013 : default:
31014 0 : return GF_BAD_PARAM;
31015 : }
31016 290 : }
31017 : static GF_Err PathLayout_get_field(GF_Node *node, GF_FieldInfo *info)
31018 : {
31019 1072 : switch (info->fieldIndex) {
31020 : case 0:
31021 14 : info->name = "addChildren";
31022 14 : info->eventType = GF_SG_EVENT_IN;
31023 14 : info->on_event_in = ((M_PathLayout *)node)->on_addChildren;
31024 14 : info->fieldType = GF_SG_VRML_MFNODE;
31025 14 : info->NDTtype = NDT_SF2DNode;
31026 14 : info->far_ptr = & ((M_PathLayout *)node)->addChildren;
31027 14 : return GF_OK;
31028 : case 1:
31029 14 : info->name = "removeChildren";
31030 14 : info->eventType = GF_SG_EVENT_IN;
31031 14 : info->on_event_in = ((M_PathLayout *)node)->on_removeChildren;
31032 14 : info->fieldType = GF_SG_VRML_MFNODE;
31033 14 : info->NDTtype = NDT_SF2DNode;
31034 14 : info->far_ptr = & ((M_PathLayout *)node)->removeChildren;
31035 14 : return GF_OK;
31036 : case 2:
31037 48 : info->name = "children";
31038 48 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31039 48 : info->fieldType = GF_SG_VRML_MFNODE;
31040 48 : info->NDTtype = NDT_SF2DNode;
31041 48 : info->far_ptr = & ((M_PathLayout *)node)->children;
31042 48 : return GF_OK;
31043 : case 3:
31044 48 : info->name = "geometry";
31045 48 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31046 48 : info->fieldType = GF_SG_VRML_SFNODE;
31047 48 : info->NDTtype = NDT_SFGeometryNode;
31048 48 : info->far_ptr = & ((M_PathLayout *)node)->geometry;
31049 48 : return GF_OK;
31050 : case 4:
31051 66 : info->name = "alignment";
31052 66 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31053 66 : info->fieldType = GF_SG_VRML_MFINT32;
31054 66 : info->far_ptr = & ((M_PathLayout *) node)->alignment;
31055 66 : return GF_OK;
31056 : case 5:
31057 82 : info->name = "pathOffset";
31058 82 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31059 82 : info->fieldType = GF_SG_VRML_SFFLOAT;
31060 82 : info->far_ptr = & ((M_PathLayout *) node)->pathOffset;
31061 82 : return GF_OK;
31062 : case 6:
31063 36 : info->name = "spacing";
31064 36 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31065 36 : info->fieldType = GF_SG_VRML_SFFLOAT;
31066 36 : info->far_ptr = & ((M_PathLayout *) node)->spacing;
31067 36 : return GF_OK;
31068 : case 7:
31069 36 : info->name = "reverseLayout";
31070 36 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31071 36 : info->fieldType = GF_SG_VRML_SFBOOL;
31072 36 : info->far_ptr = & ((M_PathLayout *) node)->reverseLayout;
31073 36 : return GF_OK;
31074 : case 8:
31075 156 : info->name = "wrapMode";
31076 156 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31077 156 : info->fieldType = GF_SG_VRML_SFINT32;
31078 156 : info->far_ptr = & ((M_PathLayout *) node)->wrapMode;
31079 156 : return GF_OK;
31080 : case 9:
31081 36 : info->name = "splitText";
31082 36 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31083 36 : info->fieldType = GF_SG_VRML_SFBOOL;
31084 36 : info->far_ptr = & ((M_PathLayout *) node)->splitText;
31085 36 : return GF_OK;
31086 : default:
31087 0 : return GF_BAD_PARAM;
31088 : }
31089 536 : }
31090 :
31091 :
31092 : static s32 PathLayout_get_field_index_by_name(char *name)
31093 : {
31094 144 : if (!strcmp("addChildren", name)) return 0;
31095 72 : if (!strcmp("removeChildren", name)) return 1;
31096 80 : if (!strcmp("children", name)) return 2;
31097 72 : if (!strcmp("geometry", name)) return 3;
31098 64 : if (!strcmp("alignment", name)) return 4;
31099 64 : if (!strcmp("pathOffset", name)) return 5;
31100 32 : if (!strcmp("spacing", name)) return 6;
31101 32 : if (!strcmp("reverseLayout", name)) return 7;
31102 64 : if (!strcmp("wrapMode", name)) return 8;
31103 0 : if (!strcmp("splitText", name)) return 9;
31104 0 : return -1;
31105 72 : }
31106 : static Bool PathLayout_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
31107 : {
31108 0 : switch (FieldIndex) {
31109 : case 4:
31110 0 : *AType = 0;
31111 0 : *QType = 13;
31112 0 : *QT13_bits = 2;
31113 0 : *b_min = FLT2FIX(-1);
31114 0 : *b_max = FLT2FIX(1);
31115 0 : return 1;
31116 : case 5:
31117 0 : *AType = 7;
31118 0 : *QType = 7;
31119 0 : *b_min = FIX_MIN;
31120 0 : *b_max = FIX_MAX;
31121 0 : return 1;
31122 : case 6:
31123 0 : *AType = 7;
31124 0 : *QType = 7;
31125 0 : *b_min = FIX_MIN;
31126 0 : *b_max = FIX_MAX;
31127 0 : return 1;
31128 : case 8:
31129 0 : *AType = 0;
31130 0 : *QType = 13;
31131 0 : *QT13_bits = 2;
31132 0 : *b_min = FLT2FIX(0);
31133 0 : *b_max = FLT2FIX(2);
31134 0 : return 1;
31135 : default:
31136 0 : return 0;
31137 : }
31138 0 : }
31139 :
31140 :
31141 :
31142 : GF_Node *PathLayout_Create()
31143 : {
31144 : M_PathLayout *p;
31145 108 : GF_SAFEALLOC(p, M_PathLayout);
31146 36 : if(!p) return NULL;
31147 36 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PathLayout);
31148 36 : gf_sg_vrml_parent_setup((GF_Node *) p);
31149 :
31150 : /*default field values*/
31151 36 : p->alignment.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
31152 36 : p->alignment.count = 1;
31153 36 : p->alignment.vals[0] = 0;
31154 36 : p->pathOffset = FLT2FIX(0);
31155 36 : p->spacing = FLT2FIX(1.0);
31156 36 : p->wrapMode = 0;
31157 36 : p->splitText = 1;
31158 36 : return (GF_Node *)p;
31159 36 : }
31160 :
31161 :
31162 : /*
31163 : RadialGradient Node deletion
31164 : */
31165 :
31166 : static void RadialGradient_Del(GF_Node *node)
31167 : {
31168 288 : M_RadialGradient *p = (M_RadialGradient *) node;
31169 144 : gf_sg_mffloat_del(p->key);
31170 144 : gf_sg_mfcolor_del(p->keyValue);
31171 144 : gf_sg_mffloat_del(p->opacity);
31172 144 : gf_node_unregister((GF_Node *) p->transform, (GF_Node *) p);
31173 144 : gf_node_free((GF_Node *) p);
31174 144 : }
31175 :
31176 : static const u16 RadialGradient_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
31177 : static const u16 RadialGradient_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
31178 : static const u16 RadialGradient_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
31179 : static const u16 RadialGradient_Dyn2All[] = { 0, 1, 5};
31180 :
31181 : static u32 RadialGradient_get_field_count(GF_Node *node, u8 IndexMode)
31182 : {
31183 458 : switch(IndexMode) {
31184 : case GF_SG_FIELD_CODING_IN:
31185 99 : return 8;
31186 : case GF_SG_FIELD_CODING_DEF:
31187 65 : return 8;
31188 : case GF_SG_FIELD_CODING_OUT:
31189 0 : return 8;
31190 : case GF_SG_FIELD_CODING_DYN:
31191 0 : return 3;
31192 : default:
31193 65 : return 8;
31194 : }
31195 229 : }
31196 :
31197 : static GF_Err RadialGradient_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
31198 : {
31199 872 : switch(IndexMode) {
31200 : case GF_SG_FIELD_CODING_IN:
31201 179 : *allField = RadialGradient_In2All[inField];
31202 179 : return GF_OK;
31203 : case GF_SG_FIELD_CODING_DEF:
31204 257 : *allField = RadialGradient_Def2All[inField];
31205 257 : return GF_OK;
31206 : case GF_SG_FIELD_CODING_OUT:
31207 0 : *allField = RadialGradient_Out2All[inField];
31208 0 : return GF_OK;
31209 : case GF_SG_FIELD_CODING_DYN:
31210 0 : *allField = RadialGradient_Dyn2All[inField];
31211 0 : return GF_OK;
31212 : default:
31213 0 : return GF_BAD_PARAM;
31214 : }
31215 436 : }
31216 : static GF_Err RadialGradient_get_field(GF_Node *node, GF_FieldInfo *info)
31217 : {
31218 3412 : switch (info->fieldIndex) {
31219 : case 0:
31220 161 : info->name = "center";
31221 161 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31222 161 : info->fieldType = GF_SG_VRML_SFVEC2F;
31223 161 : info->far_ptr = & ((M_RadialGradient *) node)->center;
31224 161 : return GF_OK;
31225 : case 1:
31226 288 : info->name = "focalPoint";
31227 288 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31228 288 : info->fieldType = GF_SG_VRML_SFVEC2F;
31229 288 : info->far_ptr = & ((M_RadialGradient *) node)->focalPoint;
31230 288 : return GF_OK;
31231 : case 2:
31232 264 : info->name = "key";
31233 264 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31234 264 : info->fieldType = GF_SG_VRML_MFFLOAT;
31235 264 : info->far_ptr = & ((M_RadialGradient *) node)->key;
31236 264 : return GF_OK;
31237 : case 3:
31238 264 : info->name = "keyValue";
31239 264 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31240 264 : info->fieldType = GF_SG_VRML_MFCOLOR;
31241 264 : info->far_ptr = & ((M_RadialGradient *) node)->keyValue;
31242 264 : return GF_OK;
31243 : case 4:
31244 174 : info->name = "opacity";
31245 174 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31246 174 : info->fieldType = GF_SG_VRML_MFFLOAT;
31247 174 : info->far_ptr = & ((M_RadialGradient *) node)->opacity;
31248 174 : return GF_OK;
31249 : case 5:
31250 204 : info->name = "radius";
31251 204 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31252 204 : info->fieldType = GF_SG_VRML_SFFLOAT;
31253 204 : info->far_ptr = & ((M_RadialGradient *) node)->radius;
31254 204 : return GF_OK;
31255 : case 6:
31256 279 : info->name = "spreadMethod";
31257 279 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31258 279 : info->fieldType = GF_SG_VRML_SFINT32;
31259 279 : info->far_ptr = & ((M_RadialGradient *) node)->spreadMethod;
31260 279 : return GF_OK;
31261 : case 7:
31262 72 : info->name = "transform";
31263 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31264 72 : info->fieldType = GF_SG_VRML_SFNODE;
31265 72 : info->NDTtype = NDT_SF3DNode;
31266 72 : info->far_ptr = & ((M_RadialGradient *)node)->transform;
31267 72 : return GF_OK;
31268 : default:
31269 0 : return GF_BAD_PARAM;
31270 : }
31271 1706 : }
31272 :
31273 :
31274 : static s32 RadialGradient_get_field_index_by_name(char *name)
31275 : {
31276 354 : if (!strcmp("center", name)) return 0;
31277 212 : if (!strcmp("focalPoint", name)) return 1;
31278 156 : if (!strcmp("key", name)) return 2;
31279 124 : if (!strcmp("keyValue", name)) return 3;
31280 68 : if (!strcmp("opacity", name)) return 4;
31281 68 : if (!strcmp("radius", name)) return 5;
31282 72 : if (!strcmp("spreadMethod", name)) return 6;
31283 0 : if (!strcmp("transform", name)) return 7;
31284 0 : return -1;
31285 174 : }
31286 : static Bool RadialGradient_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
31287 : {
31288 0 : switch (FieldIndex) {
31289 : case 0:
31290 0 : *AType = 2;
31291 0 : *QType = 5;
31292 0 : *b_min = FIX_MIN;
31293 0 : *b_max = FIX_MAX;
31294 0 : return 1;
31295 : case 1:
31296 0 : *AType = 2;
31297 0 : *QType = 5;
31298 0 : *b_min = FIX_MIN;
31299 0 : *b_max = FIX_MAX;
31300 0 : return 1;
31301 : case 2:
31302 0 : *AType = 0;
31303 0 : *QType = 8;
31304 0 : *b_min = FLT2FIX(0);
31305 0 : *b_max = FLT2FIX(1);
31306 0 : return 1;
31307 : case 3:
31308 0 : *AType = 0;
31309 0 : *QType = 4;
31310 0 : *b_min = FLT2FIX(0);
31311 0 : *b_max = FLT2FIX(1);
31312 0 : return 1;
31313 : case 4:
31314 0 : *AType = 0;
31315 0 : *QType = 7;
31316 0 : *b_min = FLT2FIX(0);
31317 0 : *b_max = FLT2FIX(1);
31318 0 : return 1;
31319 : case 5:
31320 0 : *AType = 7;
31321 0 : *QType = 12;
31322 0 : *b_min = FLT2FIX(0);
31323 0 : *b_max = FIX_MAX;
31324 0 : return 1;
31325 : case 6:
31326 0 : *AType = 0;
31327 0 : *QType = 13;
31328 0 : *QT13_bits = 2;
31329 0 : *b_min = FLT2FIX(0);
31330 0 : *b_max = FLT2FIX(2);
31331 0 : return 1;
31332 : default:
31333 0 : return 0;
31334 : }
31335 0 : }
31336 :
31337 :
31338 :
31339 : GF_Node *RadialGradient_Create()
31340 : {
31341 : M_RadialGradient *p;
31342 432 : GF_SAFEALLOC(p, M_RadialGradient);
31343 144 : if(!p) return NULL;
31344 144 : gf_node_setup((GF_Node *)p, TAG_MPEG4_RadialGradient);
31345 :
31346 : /*default field values*/
31347 144 : p->center.x = FLT2FIX(0.5);
31348 144 : p->center.y = FLT2FIX(0.5);
31349 144 : p->focalPoint.x = FLT2FIX(0);
31350 144 : p->focalPoint.y = FLT2FIX(0);
31351 144 : p->opacity.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
31352 144 : p->opacity.count = 1;
31353 144 : p->opacity.vals[0] = FLT2FIX(1);
31354 144 : p->radius = FLT2FIX(0.5);
31355 144 : p->spreadMethod = 0;
31356 144 : return (GF_Node *)p;
31357 144 : }
31358 :
31359 :
31360 : /*
31361 : SynthesizedTexture Node deletion
31362 : */
31363 :
31364 : static void SynthesizedTexture_Del(GF_Node *node)
31365 : {
31366 0 : M_SynthesizedTexture *p = (M_SynthesizedTexture *) node;
31367 0 : gf_sg_mfvec3f_del(p->translation);
31368 0 : gf_sg_mfrotation_del(p->rotation);
31369 0 : gf_sg_mfurl_del(p->url);
31370 0 : gf_node_free((GF_Node *) p);
31371 0 : }
31372 :
31373 : static const u16 SynthesizedTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
31374 : static const u16 SynthesizedTexture_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
31375 : static const u16 SynthesizedTexture_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
31376 : static const u16 SynthesizedTexture_Dyn2All[] = { 0, 1, 5};
31377 :
31378 : static u32 SynthesizedTexture_get_field_count(GF_Node *node, u8 IndexMode)
31379 : {
31380 0 : switch(IndexMode) {
31381 : case GF_SG_FIELD_CODING_IN:
31382 0 : return 9;
31383 : case GF_SG_FIELD_CODING_DEF:
31384 0 : return 9;
31385 : case GF_SG_FIELD_CODING_OUT:
31386 0 : return 11;
31387 : case GF_SG_FIELD_CODING_DYN:
31388 0 : return 3;
31389 : default:
31390 0 : return 11;
31391 : }
31392 0 : }
31393 :
31394 : static GF_Err SynthesizedTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
31395 : {
31396 0 : switch(IndexMode) {
31397 : case GF_SG_FIELD_CODING_IN:
31398 0 : *allField = SynthesizedTexture_In2All[inField];
31399 0 : return GF_OK;
31400 : case GF_SG_FIELD_CODING_DEF:
31401 0 : *allField = SynthesizedTexture_Def2All[inField];
31402 0 : return GF_OK;
31403 : case GF_SG_FIELD_CODING_OUT:
31404 0 : *allField = SynthesizedTexture_Out2All[inField];
31405 0 : return GF_OK;
31406 : case GF_SG_FIELD_CODING_DYN:
31407 0 : *allField = SynthesizedTexture_Dyn2All[inField];
31408 0 : return GF_OK;
31409 : default:
31410 0 : return GF_BAD_PARAM;
31411 : }
31412 0 : }
31413 : static GF_Err SynthesizedTexture_get_field(GF_Node *node, GF_FieldInfo *info)
31414 : {
31415 0 : switch (info->fieldIndex) {
31416 : case 0:
31417 0 : info->name = "translation";
31418 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31419 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
31420 0 : info->far_ptr = & ((M_SynthesizedTexture *) node)->translation;
31421 0 : return GF_OK;
31422 : case 1:
31423 0 : info->name = "rotation";
31424 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31425 0 : info->fieldType = GF_SG_VRML_MFROTATION;
31426 0 : info->far_ptr = & ((M_SynthesizedTexture *) node)->rotation;
31427 0 : return GF_OK;
31428 : case 2:
31429 0 : info->name = "pixelWidth";
31430 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31431 0 : info->fieldType = GF_SG_VRML_SFINT32;
31432 0 : info->far_ptr = & ((M_SynthesizedTexture *) node)->pixelWidth;
31433 0 : return GF_OK;
31434 : case 3:
31435 0 : info->name = "pixelHeight";
31436 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31437 0 : info->fieldType = GF_SG_VRML_SFINT32;
31438 0 : info->far_ptr = & ((M_SynthesizedTexture *) node)->pixelHeight;
31439 0 : return GF_OK;
31440 : case 4:
31441 0 : info->name = "loop";
31442 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31443 0 : info->fieldType = GF_SG_VRML_SFBOOL;
31444 0 : info->far_ptr = & ((M_SynthesizedTexture *) node)->loop;
31445 0 : return GF_OK;
31446 : case 5:
31447 0 : info->name = "speed";
31448 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31449 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
31450 0 : info->far_ptr = & ((M_SynthesizedTexture *) node)->speed;
31451 0 : return GF_OK;
31452 : case 6:
31453 0 : info->name = "startTime";
31454 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31455 0 : info->fieldType = GF_SG_VRML_SFTIME;
31456 0 : info->far_ptr = & ((M_SynthesizedTexture *) node)->startTime;
31457 0 : return GF_OK;
31458 : case 7:
31459 0 : info->name = "stopTime";
31460 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31461 0 : info->fieldType = GF_SG_VRML_SFTIME;
31462 0 : info->far_ptr = & ((M_SynthesizedTexture *) node)->stopTime;
31463 0 : return GF_OK;
31464 : case 8:
31465 0 : info->name = "url";
31466 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31467 0 : info->fieldType = GF_SG_VRML_MFURL;
31468 0 : info->far_ptr = & ((M_SynthesizedTexture *) node)->url;
31469 0 : return GF_OK;
31470 : case 9:
31471 0 : info->name = "duration_changed";
31472 0 : info->eventType = GF_SG_EVENT_OUT;
31473 0 : info->fieldType = GF_SG_VRML_SFTIME;
31474 0 : info->far_ptr = & ((M_SynthesizedTexture *) node)->duration_changed;
31475 0 : return GF_OK;
31476 : case 10:
31477 0 : info->name = "isActive";
31478 0 : info->eventType = GF_SG_EVENT_OUT;
31479 0 : info->fieldType = GF_SG_VRML_SFBOOL;
31480 0 : info->far_ptr = & ((M_SynthesizedTexture *) node)->isActive;
31481 0 : return GF_OK;
31482 : default:
31483 0 : return GF_BAD_PARAM;
31484 : }
31485 0 : }
31486 :
31487 :
31488 : static s32 SynthesizedTexture_get_field_index_by_name(char *name)
31489 : {
31490 0 : if (!strcmp("translation", name)) return 0;
31491 0 : if (!strcmp("rotation", name)) return 1;
31492 0 : if (!strcmp("pixelWidth", name)) return 2;
31493 0 : if (!strcmp("pixelHeight", name)) return 3;
31494 0 : if (!strcmp("loop", name)) return 4;
31495 0 : if (!strcmp("speed", name)) return 5;
31496 0 : if (!strcmp("startTime", name)) return 6;
31497 0 : if (!strcmp("stopTime", name)) return 7;
31498 0 : if (!strcmp("url", name)) return 8;
31499 0 : if (!strcmp("duration_changed", name)) return 9;
31500 0 : if (!strcmp("isActive", name)) return 10;
31501 0 : return -1;
31502 0 : }
31503 : static Bool SynthesizedTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
31504 : {
31505 0 : switch (FieldIndex) {
31506 : case 0:
31507 0 : *AType = 1;
31508 0 : *QType = 1;
31509 0 : *b_min = FIX_MIN;
31510 0 : *b_max = FIX_MAX;
31511 0 : return 1;
31512 : case 1:
31513 0 : *AType = 10;
31514 0 : *QType = 10;
31515 0 : *b_min = FIX_MIN;
31516 0 : *b_max = FIX_MAX;
31517 0 : return 1;
31518 : case 2:
31519 0 : *AType = 0;
31520 0 : *QType = 13;
31521 0 : *QT13_bits = 16;
31522 0 : *b_min = FLT2FIX(0);
31523 0 : *b_max = FIX_MAX;
31524 0 : return 1;
31525 : case 3:
31526 0 : *AType = 0;
31527 0 : *QType = 13;
31528 0 : *QT13_bits = 16;
31529 0 : *b_min = FLT2FIX(0);
31530 0 : *b_max = FIX_MAX;
31531 0 : return 1;
31532 : case 5:
31533 0 : *AType = 7;
31534 0 : *QType = 0;
31535 0 : *b_min = FIX_MIN;
31536 0 : *b_max = FIX_MAX;
31537 0 : return 1;
31538 : default:
31539 0 : return 0;
31540 : }
31541 0 : }
31542 :
31543 :
31544 :
31545 : GF_Node *SynthesizedTexture_Create()
31546 : {
31547 : M_SynthesizedTexture *p;
31548 0 : GF_SAFEALLOC(p, M_SynthesizedTexture);
31549 0 : if(!p) return NULL;
31550 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SynthesizedTexture);
31551 :
31552 : /*default field values*/
31553 0 : p->pixelWidth = -1;
31554 0 : p->pixelHeight = -1;
31555 0 : p->speed = FLT2FIX(1.0);
31556 0 : p->startTime = 0;
31557 0 : p->stopTime = 0;
31558 0 : return (GF_Node *)p;
31559 0 : }
31560 :
31561 :
31562 : /*
31563 : TransformMatrix2D Node deletion
31564 : */
31565 :
31566 : static void TransformMatrix2D_Del(GF_Node *node)
31567 : {
31568 3932 : M_TransformMatrix2D *p = (M_TransformMatrix2D *) node;
31569 1966 : gf_sg_vrml_parent_destroy((GF_Node *) p);
31570 1966 : gf_node_free((GF_Node *) p);
31571 1966 : }
31572 :
31573 : static const u16 TransformMatrix2D_Def2All[] = { 2, 3, 4, 5, 6, 7, 8};
31574 : static const u16 TransformMatrix2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
31575 : static const u16 TransformMatrix2D_Out2All[] = { 2, 3, 4, 5, 6, 7, 8};
31576 : static const u16 TransformMatrix2D_Dyn2All[] = { 3, 4, 5, 6, 7, 8};
31577 :
31578 : static u32 TransformMatrix2D_get_field_count(GF_Node *node, u8 IndexMode)
31579 : {
31580 4138 : switch(IndexMode) {
31581 : case GF_SG_FIELD_CODING_IN:
31582 135 : return 9;
31583 : case GF_SG_FIELD_CODING_DEF:
31584 1822 : return 7;
31585 : case GF_SG_FIELD_CODING_OUT:
31586 0 : return 7;
31587 : case GF_SG_FIELD_CODING_DYN:
31588 0 : return 6;
31589 : default:
31590 112 : return 9;
31591 : }
31592 2069 : }
31593 :
31594 : static GF_Err TransformMatrix2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
31595 : {
31596 13092 : switch(IndexMode) {
31597 : case GF_SG_FIELD_CODING_IN:
31598 259 : *allField = TransformMatrix2D_In2All[inField];
31599 259 : return GF_OK;
31600 : case GF_SG_FIELD_CODING_DEF:
31601 6287 : *allField = TransformMatrix2D_Def2All[inField];
31602 6287 : return GF_OK;
31603 : case GF_SG_FIELD_CODING_OUT:
31604 0 : *allField = TransformMatrix2D_Out2All[inField];
31605 0 : return GF_OK;
31606 : case GF_SG_FIELD_CODING_DYN:
31607 0 : *allField = TransformMatrix2D_Dyn2All[inField];
31608 0 : return GF_OK;
31609 : default:
31610 0 : return GF_BAD_PARAM;
31611 : }
31612 6546 : }
31613 : static GF_Err TransformMatrix2D_get_field(GF_Node *node, GF_FieldInfo *info)
31614 : {
31615 37152 : switch (info->fieldIndex) {
31616 : case 0:
31617 112 : info->name = "addChildren";
31618 112 : info->eventType = GF_SG_EVENT_IN;
31619 112 : info->on_event_in = ((M_TransformMatrix2D *)node)->on_addChildren;
31620 112 : info->fieldType = GF_SG_VRML_MFNODE;
31621 112 : info->NDTtype = NDT_SF2DNode;
31622 112 : info->far_ptr = & ((M_TransformMatrix2D *)node)->addChildren;
31623 112 : return GF_OK;
31624 : case 1:
31625 112 : info->name = "removeChildren";
31626 112 : info->eventType = GF_SG_EVENT_IN;
31627 112 : info->on_event_in = ((M_TransformMatrix2D *)node)->on_removeChildren;
31628 112 : info->fieldType = GF_SG_VRML_MFNODE;
31629 112 : info->NDTtype = NDT_SF2DNode;
31630 112 : info->far_ptr = & ((M_TransformMatrix2D *)node)->removeChildren;
31631 112 : return GF_OK;
31632 : case 2:
31633 1957 : info->name = "children";
31634 1957 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31635 1957 : info->fieldType = GF_SG_VRML_MFNODE;
31636 1957 : info->NDTtype = NDT_SF2DNode;
31637 1957 : info->far_ptr = & ((M_TransformMatrix2D *)node)->children;
31638 1957 : return GF_OK;
31639 : case 3:
31640 2872 : info->name = "mxx";
31641 2872 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31642 2872 : info->fieldType = GF_SG_VRML_SFFLOAT;
31643 2872 : info->far_ptr = & ((M_TransformMatrix2D *) node)->mxx;
31644 2872 : return GF_OK;
31645 : case 4:
31646 2497 : info->name = "mxy";
31647 2497 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31648 2497 : info->fieldType = GF_SG_VRML_SFFLOAT;
31649 2497 : info->far_ptr = & ((M_TransformMatrix2D *) node)->mxy;
31650 2497 : return GF_OK;
31651 : case 5:
31652 2864 : info->name = "tx";
31653 2864 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31654 2864 : info->fieldType = GF_SG_VRML_SFFLOAT;
31655 2864 : info->far_ptr = & ((M_TransformMatrix2D *) node)->tx;
31656 2864 : return GF_OK;
31657 : case 6:
31658 2381 : info->name = "myx";
31659 2381 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31660 2381 : info->fieldType = GF_SG_VRML_SFFLOAT;
31661 2381 : info->far_ptr = & ((M_TransformMatrix2D *) node)->myx;
31662 2381 : return GF_OK;
31663 : case 7:
31664 2887 : info->name = "myy";
31665 2887 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31666 2887 : info->fieldType = GF_SG_VRML_SFFLOAT;
31667 2887 : info->far_ptr = & ((M_TransformMatrix2D *) node)->myy;
31668 2887 : return GF_OK;
31669 : case 8:
31670 2894 : info->name = "ty";
31671 2894 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31672 2894 : info->fieldType = GF_SG_VRML_SFFLOAT;
31673 2894 : info->far_ptr = & ((M_TransformMatrix2D *) node)->ty;
31674 2894 : return GF_OK;
31675 : default:
31676 0 : return GF_BAD_PARAM;
31677 : }
31678 18576 : }
31679 :
31680 :
31681 : static s32 TransformMatrix2D_get_field_index_by_name(char *name)
31682 : {
31683 424 : if (!strcmp("addChildren", name)) return 0;
31684 212 : if (!strcmp("removeChildren", name)) return 1;
31685 248 : if (!strcmp("children", name)) return 2;
31686 200 : if (!strcmp("mxx", name)) return 3;
31687 204 : if (!strcmp("mxy", name)) return 4;
31688 120 : if (!strcmp("tx", name)) return 5;
31689 104 : if (!strcmp("myx", name)) return 6;
31690 84 : if (!strcmp("myy", name)) return 7;
31691 56 : if (!strcmp("ty", name)) return 8;
31692 0 : return -1;
31693 212 : }
31694 : static Bool TransformMatrix2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
31695 : {
31696 0 : switch (FieldIndex) {
31697 : case 3:
31698 0 : *AType = 7;
31699 0 : *QType = 7;
31700 0 : *b_min = FIX_MIN;
31701 0 : *b_max = FIX_MAX;
31702 0 : return 1;
31703 : case 4:
31704 0 : *AType = 7;
31705 0 : *QType = 7;
31706 0 : *b_min = FIX_MIN;
31707 0 : *b_max = FIX_MAX;
31708 0 : return 1;
31709 : case 5:
31710 0 : *AType = 7;
31711 0 : *QType = 7;
31712 0 : *b_min = FIX_MIN;
31713 0 : *b_max = FIX_MAX;
31714 0 : return 1;
31715 : case 6:
31716 0 : *AType = 7;
31717 0 : *QType = 7;
31718 0 : *b_min = FIX_MIN;
31719 0 : *b_max = FIX_MAX;
31720 0 : return 1;
31721 : case 7:
31722 0 : *AType = 7;
31723 0 : *QType = 7;
31724 0 : *b_min = FIX_MIN;
31725 0 : *b_max = FIX_MAX;
31726 0 : return 1;
31727 : case 8:
31728 0 : *AType = 7;
31729 0 : *QType = 7;
31730 0 : *b_min = FIX_MIN;
31731 0 : *b_max = FIX_MAX;
31732 0 : return 1;
31733 : default:
31734 0 : return 0;
31735 : }
31736 0 : }
31737 :
31738 :
31739 :
31740 : GF_Node *TransformMatrix2D_Create()
31741 : {
31742 : M_TransformMatrix2D *p;
31743 5898 : GF_SAFEALLOC(p, M_TransformMatrix2D);
31744 1966 : if(!p) return NULL;
31745 1966 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TransformMatrix2D);
31746 1966 : gf_sg_vrml_parent_setup((GF_Node *) p);
31747 :
31748 : /*default field values*/
31749 1966 : p->mxx = FLT2FIX(1);
31750 1966 : p->mxy = FLT2FIX(0);
31751 1966 : p->tx = FLT2FIX(0);
31752 1966 : p->myx = FLT2FIX(0);
31753 1966 : p->myy = FLT2FIX(1);
31754 1966 : p->ty = FLT2FIX(0);
31755 1966 : return (GF_Node *)p;
31756 1966 : }
31757 :
31758 :
31759 : /*
31760 : Viewport Node deletion
31761 : */
31762 :
31763 : static void Viewport_Del(GF_Node *node)
31764 : {
31765 622 : M_Viewport *p = (M_Viewport *) node;
31766 311 : gf_sg_mfint32_del(p->alignment);
31767 311 : gf_sg_sfstring_del(p->description);
31768 311 : gf_node_free((GF_Node *) p);
31769 311 : }
31770 :
31771 : static const u16 Viewport_Def2All[] = { 1, 2, 3, 4, 5, 6};
31772 : static const u16 Viewport_In2All[] = { 0, 1, 2, 3, 4, 5};
31773 : static const u16 Viewport_Out2All[] = { 1, 2, 3, 4, 5, 7, 8};
31774 : static const u16 Viewport_Dyn2All[] = { 1, 2, 3};
31775 :
31776 : static u32 Viewport_get_field_count(GF_Node *node, u8 IndexMode)
31777 : {
31778 586 : switch(IndexMode) {
31779 : case GF_SG_FIELD_CODING_IN:
31780 18 : return 6;
31781 : case GF_SG_FIELD_CODING_DEF:
31782 153 : return 6;
31783 : case GF_SG_FIELD_CODING_OUT:
31784 0 : return 7;
31785 : case GF_SG_FIELD_CODING_DYN:
31786 0 : return 3;
31787 : default:
31788 122 : return 9;
31789 : }
31790 293 : }
31791 :
31792 : static GF_Err Viewport_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
31793 : {
31794 1046 : switch(IndexMode) {
31795 : case GF_SG_FIELD_CODING_IN:
31796 14 : *allField = Viewport_In2All[inField];
31797 14 : return GF_OK;
31798 : case GF_SG_FIELD_CODING_DEF:
31799 509 : *allField = Viewport_Def2All[inField];
31800 509 : return GF_OK;
31801 : case GF_SG_FIELD_CODING_OUT:
31802 0 : *allField = Viewport_Out2All[inField];
31803 0 : return GF_OK;
31804 : case GF_SG_FIELD_CODING_DYN:
31805 0 : *allField = Viewport_Dyn2All[inField];
31806 0 : return GF_OK;
31807 : default:
31808 0 : return GF_BAD_PARAM;
31809 : }
31810 523 : }
31811 : static GF_Err Viewport_get_field(GF_Node *node, GF_FieldInfo *info)
31812 : {
31813 6358 : switch (info->fieldIndex) {
31814 : case 0:
31815 148 : info->name = "set_bind";
31816 148 : info->eventType = GF_SG_EVENT_IN;
31817 148 : info->on_event_in = ((M_Viewport *)node)->on_set_bind;
31818 148 : info->fieldType = GF_SG_VRML_SFBOOL;
31819 148 : info->far_ptr = & ((M_Viewport *) node)->set_bind;
31820 148 : return GF_OK;
31821 : case 1:
31822 522 : info->name = "position";
31823 522 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31824 522 : info->fieldType = GF_SG_VRML_SFVEC2F;
31825 522 : info->far_ptr = & ((M_Viewport *) node)->position;
31826 522 : return GF_OK;
31827 : case 2:
31828 567 : info->name = "size";
31829 567 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31830 567 : info->fieldType = GF_SG_VRML_SFVEC2F;
31831 567 : info->far_ptr = & ((M_Viewport *) node)->size;
31832 567 : return GF_OK;
31833 : case 3:
31834 327 : info->name = "orientation";
31835 327 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31836 327 : info->fieldType = GF_SG_VRML_SFFLOAT;
31837 327 : info->far_ptr = & ((M_Viewport *) node)->orientation;
31838 327 : return GF_OK;
31839 : case 4:
31840 507 : info->name = "alignment";
31841 507 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31842 507 : info->fieldType = GF_SG_VRML_MFINT32;
31843 507 : info->far_ptr = & ((M_Viewport *) node)->alignment;
31844 507 : return GF_OK;
31845 : case 5:
31846 522 : info->name = "fit";
31847 522 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31848 522 : info->fieldType = GF_SG_VRML_SFINT32;
31849 522 : info->far_ptr = & ((M_Viewport *) node)->fit;
31850 522 : return GF_OK;
31851 : case 6:
31852 342 : info->name = "description";
31853 342 : info->eventType = GF_SG_EVENT_FIELD;
31854 342 : info->fieldType = GF_SG_VRML_SFSTRING;
31855 342 : info->far_ptr = & ((M_Viewport *) node)->description;
31856 342 : return GF_OK;
31857 : case 7:
31858 122 : info->name = "bindTime";
31859 122 : info->eventType = GF_SG_EVENT_OUT;
31860 122 : info->fieldType = GF_SG_VRML_SFTIME;
31861 122 : info->far_ptr = & ((M_Viewport *) node)->bindTime;
31862 122 : return GF_OK;
31863 : case 8:
31864 122 : info->name = "isBound";
31865 122 : info->eventType = GF_SG_EVENT_OUT;
31866 122 : info->fieldType = GF_SG_VRML_SFBOOL;
31867 122 : info->far_ptr = & ((M_Viewport *) node)->isBound;
31868 122 : return GF_OK;
31869 : default:
31870 0 : return GF_BAD_PARAM;
31871 : }
31872 3179 : }
31873 :
31874 :
31875 : static s32 Viewport_get_field_index_by_name(char *name)
31876 : {
31877 512 : if (!strcmp("set_bind", name)) return 0;
31878 300 : if (!strcmp("position", name)) return 1;
31879 256 : if (!strcmp("size", name)) return 2;
31880 124 : if (!strcmp("orientation", name)) return 3;
31881 168 : if (!strcmp("alignment", name)) return 4;
31882 120 : if (!strcmp("fit", name)) return 5;
31883 16 : if (!strcmp("description", name)) return 6;
31884 0 : if (!strcmp("bindTime", name)) return 7;
31885 0 : if (!strcmp("isBound", name)) return 8;
31886 0 : return -1;
31887 252 : }
31888 : static Bool Viewport_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
31889 : {
31890 0 : switch (FieldIndex) {
31891 : case 1:
31892 0 : *AType = 1;
31893 0 : *QType = 1;
31894 0 : *b_min = FIX_MIN;
31895 0 : *b_max = FIX_MAX;
31896 0 : return 1;
31897 : case 2:
31898 0 : *AType = 12;
31899 0 : *QType = 12;
31900 0 : *b_min = FIX_MIN;
31901 0 : *b_max = FIX_MAX;
31902 0 : return 1;
31903 : case 3:
31904 0 : *AType = 6;
31905 0 : *QType = 6;
31906 0 : *b_min = FLT2FIX(0);
31907 0 : *b_max = FLT2FIX(6.2831853);
31908 0 : return 1;
31909 : case 4:
31910 0 : *AType = 0;
31911 0 : *QType = 13;
31912 0 : *QT13_bits = 3;
31913 0 : *b_min = FLT2FIX(-1);
31914 0 : *b_max = FLT2FIX(1);
31915 0 : return 1;
31916 : case 5:
31917 0 : *AType = 0;
31918 0 : *QType = 13;
31919 0 : *QT13_bits = 3;
31920 0 : *b_min = FLT2FIX(0);
31921 0 : *b_max = FLT2FIX(2);
31922 0 : return 1;
31923 : default:
31924 0 : return 0;
31925 : }
31926 0 : }
31927 :
31928 :
31929 :
31930 : GF_Node *Viewport_Create()
31931 : {
31932 : M_Viewport *p;
31933 933 : GF_SAFEALLOC(p, M_Viewport);
31934 311 : if(!p) return NULL;
31935 311 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Viewport);
31936 :
31937 : /*default field values*/
31938 311 : p->position.x = FLT2FIX(0);
31939 311 : p->position.y = FLT2FIX(0);
31940 311 : p->size.x = FLT2FIX(-1);
31941 311 : p->size.y = FLT2FIX(-1);
31942 311 : p->orientation = FLT2FIX(0);
31943 311 : p->alignment.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
31944 311 : p->alignment.count = 1;
31945 311 : p->alignment.vals[0] = 0;
31946 311 : p->fit = 0;
31947 311 : return (GF_Node *)p;
31948 311 : }
31949 :
31950 :
31951 : /*
31952 : XCurve2D Node deletion
31953 : */
31954 :
31955 : static void XCurve2D_Del(GF_Node *node)
31956 : {
31957 196 : M_XCurve2D *p = (M_XCurve2D *) node;
31958 98 : gf_node_unregister((GF_Node *) p->point, (GF_Node *) p);
31959 98 : gf_sg_mfint32_del(p->type);
31960 98 : gf_node_free((GF_Node *) p);
31961 98 : }
31962 :
31963 : static const u16 XCurve2D_Def2All[] = { 0, 1, 2};
31964 : static const u16 XCurve2D_In2All[] = { 0, 1, 2};
31965 : static const u16 XCurve2D_Out2All[] = { 0, 1, 2};
31966 : static const u16 XCurve2D_Dyn2All[] = { 1};
31967 :
31968 : static u32 XCurve2D_get_field_count(GF_Node *node, u8 IndexMode)
31969 : {
31970 172 : switch(IndexMode) {
31971 : case GF_SG_FIELD_CODING_IN:
31972 0 : return 3;
31973 : case GF_SG_FIELD_CODING_DEF:
31974 49 : return 3;
31975 : case GF_SG_FIELD_CODING_OUT:
31976 0 : return 3;
31977 : case GF_SG_FIELD_CODING_DYN:
31978 0 : return 1;
31979 : default:
31980 37 : return 3;
31981 : }
31982 86 : }
31983 :
31984 : static GF_Err XCurve2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
31985 : {
31986 172 : switch(IndexMode) {
31987 : case GF_SG_FIELD_CODING_IN:
31988 0 : *allField = XCurve2D_In2All[inField];
31989 0 : return GF_OK;
31990 : case GF_SG_FIELD_CODING_DEF:
31991 86 : *allField = XCurve2D_Def2All[inField];
31992 86 : return GF_OK;
31993 : case GF_SG_FIELD_CODING_OUT:
31994 0 : *allField = XCurve2D_Out2All[inField];
31995 0 : return GF_OK;
31996 : case GF_SG_FIELD_CODING_DYN:
31997 0 : *allField = XCurve2D_Dyn2All[inField];
31998 0 : return GF_OK;
31999 : default:
32000 0 : return GF_BAD_PARAM;
32001 : }
32002 86 : }
32003 : static GF_Err XCurve2D_get_field(GF_Node *node, GF_FieldInfo *info)
32004 : {
32005 822 : switch (info->fieldIndex) {
32006 : case 0:
32007 132 : info->name = "point";
32008 132 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32009 132 : info->fieldType = GF_SG_VRML_SFNODE;
32010 132 : info->NDTtype = NDT_SFCoordinate2DNode;
32011 132 : info->far_ptr = & ((M_XCurve2D *)node)->point;
32012 132 : return GF_OK;
32013 : case 1:
32014 98 : info->name = "fineness";
32015 98 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32016 98 : info->fieldType = GF_SG_VRML_SFFLOAT;
32017 98 : info->far_ptr = & ((M_XCurve2D *) node)->fineness;
32018 98 : return GF_OK;
32019 : case 2:
32020 181 : info->name = "type";
32021 181 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32022 181 : info->fieldType = GF_SG_VRML_MFINT32;
32023 181 : info->far_ptr = & ((M_XCurve2D *) node)->type;
32024 181 : return GF_OK;
32025 : default:
32026 0 : return GF_BAD_PARAM;
32027 : }
32028 411 : }
32029 :
32030 :
32031 : static s32 XCurve2D_get_field_index_by_name(char *name)
32032 : {
32033 120 : if (!strcmp("point", name)) return 0;
32034 24 : if (!strcmp("fineness", name)) return 1;
32035 48 : if (!strcmp("type", name)) return 2;
32036 0 : return -1;
32037 48 : }
32038 : static Bool XCurve2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
32039 : {
32040 0 : switch (FieldIndex) {
32041 : case 1:
32042 0 : *AType = 7;
32043 0 : *QType = 0;
32044 0 : *b_min = FLT2FIX(0);
32045 0 : *b_max = FLT2FIX(1);
32046 0 : return 1;
32047 : case 2:
32048 0 : *AType = 0;
32049 0 : *QType = 13;
32050 0 : *QT13_bits = 4;
32051 0 : *b_min = FLT2FIX(0);
32052 0 : *b_max = FLT2FIX(15);
32053 0 : return 1;
32054 : default:
32055 0 : return 0;
32056 : }
32057 0 : }
32058 :
32059 :
32060 :
32061 : GF_Node *XCurve2D_Create()
32062 : {
32063 : M_XCurve2D *p;
32064 294 : GF_SAFEALLOC(p, M_XCurve2D);
32065 98 : if(!p) return NULL;
32066 98 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XCurve2D);
32067 :
32068 : /*default field values*/
32069 98 : p->fineness = FLT2FIX(0.5);
32070 98 : return (GF_Node *)p;
32071 98 : }
32072 :
32073 :
32074 : /*
32075 : XFontStyle Node deletion
32076 : */
32077 :
32078 : static void XFontStyle_Del(GF_Node *node)
32079 : {
32080 0 : M_XFontStyle *p = (M_XFontStyle *) node;
32081 0 : gf_sg_mfstring_del(p->fontName);
32082 0 : gf_sg_mfstring_del(p->justify);
32083 0 : gf_sg_sfstring_del(p->language);
32084 0 : gf_sg_sfstring_del(p->stretch);
32085 0 : gf_sg_sfstring_del(p->style);
32086 0 : gf_sg_mfstring_del(p->featureName);
32087 0 : gf_sg_mfint32_del(p->featureStartOffset);
32088 0 : gf_sg_mfint32_del(p->featureLength);
32089 0 : gf_sg_mfint32_del(p->featureValue);
32090 0 : gf_node_free((GF_Node *) p);
32091 0 : }
32092 :
32093 : static const u16 XFontStyle_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
32094 : static const u16 XFontStyle_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
32095 : static const u16 XFontStyle_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
32096 :
32097 : static u32 XFontStyle_get_field_count(GF_Node *node, u8 IndexMode)
32098 : {
32099 0 : switch(IndexMode) {
32100 : case GF_SG_FIELD_CODING_IN:
32101 0 : return 17;
32102 : case GF_SG_FIELD_CODING_DEF:
32103 0 : return 17;
32104 : case GF_SG_FIELD_CODING_OUT:
32105 0 : return 17;
32106 : case GF_SG_FIELD_CODING_DYN:
32107 0 : return 0;
32108 : default:
32109 0 : return 17;
32110 : }
32111 0 : }
32112 :
32113 : static GF_Err XFontStyle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
32114 : {
32115 0 : switch(IndexMode) {
32116 : case GF_SG_FIELD_CODING_IN:
32117 0 : *allField = XFontStyle_In2All[inField];
32118 0 : return GF_OK;
32119 : case GF_SG_FIELD_CODING_DEF:
32120 0 : *allField = XFontStyle_Def2All[inField];
32121 0 : return GF_OK;
32122 : case GF_SG_FIELD_CODING_OUT:
32123 0 : *allField = XFontStyle_Out2All[inField];
32124 0 : return GF_OK;
32125 : default:
32126 0 : return GF_BAD_PARAM;
32127 : }
32128 0 : }
32129 : static GF_Err XFontStyle_get_field(GF_Node *node, GF_FieldInfo *info)
32130 : {
32131 0 : switch (info->fieldIndex) {
32132 : case 0:
32133 0 : info->name = "fontName";
32134 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32135 0 : info->fieldType = GF_SG_VRML_MFSTRING;
32136 0 : info->far_ptr = & ((M_XFontStyle *) node)->fontName;
32137 0 : return GF_OK;
32138 : case 1:
32139 0 : info->name = "horizontal";
32140 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32141 0 : info->fieldType = GF_SG_VRML_SFBOOL;
32142 0 : info->far_ptr = & ((M_XFontStyle *) node)->horizontal;
32143 0 : return GF_OK;
32144 : case 2:
32145 0 : info->name = "justify";
32146 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32147 0 : info->fieldType = GF_SG_VRML_MFSTRING;
32148 0 : info->far_ptr = & ((M_XFontStyle *) node)->justify;
32149 0 : return GF_OK;
32150 : case 3:
32151 0 : info->name = "language";
32152 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32153 0 : info->fieldType = GF_SG_VRML_SFSTRING;
32154 0 : info->far_ptr = & ((M_XFontStyle *) node)->language;
32155 0 : return GF_OK;
32156 : case 4:
32157 0 : info->name = "leftToRight";
32158 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32159 0 : info->fieldType = GF_SG_VRML_SFBOOL;
32160 0 : info->far_ptr = & ((M_XFontStyle *) node)->leftToRight;
32161 0 : return GF_OK;
32162 : case 5:
32163 0 : info->name = "size";
32164 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32165 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
32166 0 : info->far_ptr = & ((M_XFontStyle *) node)->size;
32167 0 : return GF_OK;
32168 : case 6:
32169 0 : info->name = "stretch";
32170 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32171 0 : info->fieldType = GF_SG_VRML_SFSTRING;
32172 0 : info->far_ptr = & ((M_XFontStyle *) node)->stretch;
32173 0 : return GF_OK;
32174 : case 7:
32175 0 : info->name = "letterSpacing";
32176 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32177 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
32178 0 : info->far_ptr = & ((M_XFontStyle *) node)->letterSpacing;
32179 0 : return GF_OK;
32180 : case 8:
32181 0 : info->name = "wordSpacing";
32182 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32183 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
32184 0 : info->far_ptr = & ((M_XFontStyle *) node)->wordSpacing;
32185 0 : return GF_OK;
32186 : case 9:
32187 0 : info->name = "weight";
32188 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32189 0 : info->fieldType = GF_SG_VRML_SFINT32;
32190 0 : info->far_ptr = & ((M_XFontStyle *) node)->weight;
32191 0 : return GF_OK;
32192 : case 10:
32193 0 : info->name = "fontKerning";
32194 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32195 0 : info->fieldType = GF_SG_VRML_SFBOOL;
32196 0 : info->far_ptr = & ((M_XFontStyle *) node)->fontKerning;
32197 0 : return GF_OK;
32198 : case 11:
32199 0 : info->name = "style";
32200 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32201 0 : info->fieldType = GF_SG_VRML_SFSTRING;
32202 0 : info->far_ptr = & ((M_XFontStyle *) node)->style;
32203 0 : return GF_OK;
32204 : case 12:
32205 0 : info->name = "topToBottom";
32206 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32207 0 : info->fieldType = GF_SG_VRML_SFBOOL;
32208 0 : info->far_ptr = & ((M_XFontStyle *) node)->topToBottom;
32209 0 : return GF_OK;
32210 : case 13:
32211 0 : info->name = "featureName";
32212 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32213 0 : info->fieldType = GF_SG_VRML_MFSTRING;
32214 0 : info->far_ptr = & ((M_XFontStyle *) node)->featureName;
32215 0 : return GF_OK;
32216 : case 14:
32217 0 : info->name = "featureStartOffset";
32218 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32219 0 : info->fieldType = GF_SG_VRML_MFINT32;
32220 0 : info->far_ptr = & ((M_XFontStyle *) node)->featureStartOffset;
32221 0 : return GF_OK;
32222 : case 15:
32223 0 : info->name = "featureLength";
32224 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32225 0 : info->fieldType = GF_SG_VRML_MFINT32;
32226 0 : info->far_ptr = & ((M_XFontStyle *) node)->featureLength;
32227 0 : return GF_OK;
32228 : case 16:
32229 0 : info->name = "featureValue";
32230 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32231 0 : info->fieldType = GF_SG_VRML_MFINT32;
32232 0 : info->far_ptr = & ((M_XFontStyle *) node)->featureValue;
32233 0 : return GF_OK;
32234 : default:
32235 0 : return GF_BAD_PARAM;
32236 : }
32237 0 : }
32238 :
32239 :
32240 : static s32 XFontStyle_get_field_index_by_name(char *name)
32241 : {
32242 0 : if (!strcmp("fontName", name)) return 0;
32243 0 : if (!strcmp("horizontal", name)) return 1;
32244 0 : if (!strcmp("justify", name)) return 2;
32245 0 : if (!strcmp("language", name)) return 3;
32246 0 : if (!strcmp("leftToRight", name)) return 4;
32247 0 : if (!strcmp("size", name)) return 5;
32248 0 : if (!strcmp("stretch", name)) return 6;
32249 0 : if (!strcmp("letterSpacing", name)) return 7;
32250 0 : if (!strcmp("wordSpacing", name)) return 8;
32251 0 : if (!strcmp("weight", name)) return 9;
32252 0 : if (!strcmp("fontKerning", name)) return 10;
32253 0 : if (!strcmp("style", name)) return 11;
32254 0 : if (!strcmp("topToBottom", name)) return 12;
32255 0 : if (!strcmp("featureName", name)) return 13;
32256 0 : if (!strcmp("featureStartOffset", name)) return 14;
32257 0 : if (!strcmp("featureLength", name)) return 15;
32258 0 : if (!strcmp("featureValue", name)) return 16;
32259 0 : return -1;
32260 0 : }
32261 : static Bool XFontStyle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
32262 : {
32263 0 : switch (FieldIndex) {
32264 : case 5:
32265 0 : *AType = 0;
32266 0 : *QType = 11;
32267 0 : *b_min = FLT2FIX(0);
32268 0 : *b_max = FIX_MAX;
32269 0 : return 1;
32270 : case 7:
32271 0 : *AType = 0;
32272 0 : *QType = 11;
32273 0 : *b_min = FLT2FIX(0);
32274 0 : *b_max = FIX_MAX;
32275 0 : return 1;
32276 : case 8:
32277 0 : *AType = 0;
32278 0 : *QType = 11;
32279 0 : *b_min = FLT2FIX(0);
32280 0 : *b_max = FIX_MAX;
32281 0 : return 1;
32282 : default:
32283 0 : return 0;
32284 : }
32285 0 : }
32286 :
32287 :
32288 :
32289 : GF_Node *XFontStyle_Create()
32290 : {
32291 : M_XFontStyle *p;
32292 0 : GF_SAFEALLOC(p, M_XFontStyle);
32293 0 : if(!p) return NULL;
32294 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XFontStyle);
32295 :
32296 : /*default field values*/
32297 0 : p->fontName.vals = (char**)gf_malloc(sizeof(SFString)*1);
32298 0 : p->fontName.count = 1;
32299 0 : p->fontName.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
32300 0 : strcpy(p->fontName.vals[0], "SERIF");
32301 0 : p->horizontal = 1;
32302 0 : p->justify.vals = (char**)gf_malloc(sizeof(SFString)*1);
32303 0 : p->justify.count = 1;
32304 0 : p->justify.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
32305 0 : strcpy(p->justify.vals[0], "BEGIN");
32306 0 : p->leftToRight = 1;
32307 0 : p->size = FLT2FIX(1.0);
32308 0 : p->stretch.buffer = (char*)gf_malloc(sizeof(char) * 7);
32309 0 : strcpy(p->stretch.buffer, "NORMAL");
32310 0 : p->letterSpacing = FLT2FIX(0.0);
32311 0 : p->wordSpacing = FLT2FIX(0.0);
32312 0 : p->weight = 400;
32313 0 : p->fontKerning = 1;
32314 0 : p->style.buffer = (char*)gf_malloc(sizeof(char) * 6);
32315 0 : strcpy(p->style.buffer, "PLAIN");
32316 0 : p->topToBottom = 1;
32317 0 : return (GF_Node *)p;
32318 0 : }
32319 :
32320 :
32321 : /*
32322 : XLineProperties Node deletion
32323 : */
32324 :
32325 : static void XLineProperties_Del(GF_Node *node)
32326 : {
32327 960 : M_XLineProperties *p = (M_XLineProperties *) node;
32328 480 : gf_sg_mffloat_del(p->dashes);
32329 480 : gf_node_unregister((GF_Node *) p->texture, (GF_Node *) p);
32330 480 : gf_node_unregister((GF_Node *) p->textureTransform, (GF_Node *) p);
32331 480 : gf_node_free((GF_Node *) p);
32332 480 : }
32333 :
32334 : static const u16 XLineProperties_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
32335 : static const u16 XLineProperties_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
32336 : static const u16 XLineProperties_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
32337 : static const u16 XLineProperties_Dyn2All[] = { 0, 7, 8, 9, 10};
32338 :
32339 : static u32 XLineProperties_get_field_count(GF_Node *node, u8 IndexMode)
32340 : {
32341 1076 : switch(IndexMode) {
32342 : case GF_SG_FIELD_CODING_IN:
32343 108 : return 13;
32344 : case GF_SG_FIELD_CODING_DEF:
32345 227 : return 13;
32346 : case GF_SG_FIELD_CODING_OUT:
32347 0 : return 13;
32348 : case GF_SG_FIELD_CODING_DYN:
32349 0 : return 5;
32350 : default:
32351 203 : return 13;
32352 : }
32353 538 : }
32354 :
32355 : static GF_Err XLineProperties_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
32356 : {
32357 2506 : switch(IndexMode) {
32358 : case GF_SG_FIELD_CODING_IN:
32359 248 : *allField = XLineProperties_In2All[inField];
32360 248 : return GF_OK;
32361 : case GF_SG_FIELD_CODING_DEF:
32362 1005 : *allField = XLineProperties_Def2All[inField];
32363 1005 : return GF_OK;
32364 : case GF_SG_FIELD_CODING_OUT:
32365 0 : *allField = XLineProperties_Out2All[inField];
32366 0 : return GF_OK;
32367 : case GF_SG_FIELD_CODING_DYN:
32368 0 : *allField = XLineProperties_Dyn2All[inField];
32369 0 : return GF_OK;
32370 : default:
32371 0 : return GF_BAD_PARAM;
32372 : }
32373 1253 : }
32374 : static GF_Err XLineProperties_get_field(GF_Node *node, GF_FieldInfo *info)
32375 : {
32376 14342 : switch (info->fieldIndex) {
32377 : case 0:
32378 805 : info->name = "lineColor";
32379 805 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32380 805 : info->fieldType = GF_SG_VRML_SFCOLOR;
32381 805 : info->far_ptr = & ((M_XLineProperties *) node)->lineColor;
32382 805 : return GF_OK;
32383 : case 1:
32384 552 : info->name = "lineStyle";
32385 552 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32386 552 : info->fieldType = GF_SG_VRML_SFINT32;
32387 552 : info->far_ptr = & ((M_XLineProperties *) node)->lineStyle;
32388 552 : return GF_OK;
32389 : case 2:
32390 568 : info->name = "isCenterAligned";
32391 568 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32392 568 : info->fieldType = GF_SG_VRML_SFBOOL;
32393 568 : info->far_ptr = & ((M_XLineProperties *) node)->isCenterAligned;
32394 568 : return GF_OK;
32395 : case 3:
32396 511 : info->name = "isScalable";
32397 511 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32398 511 : info->fieldType = GF_SG_VRML_SFBOOL;
32399 511 : info->far_ptr = & ((M_XLineProperties *) node)->isScalable;
32400 511 : return GF_OK;
32401 : case 4:
32402 567 : info->name = "lineCap";
32403 567 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32404 567 : info->fieldType = GF_SG_VRML_SFINT32;
32405 567 : info->far_ptr = & ((M_XLineProperties *) node)->lineCap;
32406 567 : return GF_OK;
32407 : case 5:
32408 522 : info->name = "lineJoin";
32409 522 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32410 522 : info->fieldType = GF_SG_VRML_SFINT32;
32411 522 : info->far_ptr = & ((M_XLineProperties *) node)->lineJoin;
32412 522 : return GF_OK;
32413 : case 6:
32414 507 : info->name = "miterLimit";
32415 507 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32416 507 : info->fieldType = GF_SG_VRML_SFFLOAT;
32417 507 : info->far_ptr = & ((M_XLineProperties *) node)->miterLimit;
32418 507 : return GF_OK;
32419 : case 7:
32420 554 : info->name = "transparency";
32421 554 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32422 554 : info->fieldType = GF_SG_VRML_SFFLOAT;
32423 554 : info->far_ptr = & ((M_XLineProperties *) node)->transparency;
32424 554 : return GF_OK;
32425 : case 8:
32426 958 : info->name = "width";
32427 958 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32428 958 : info->fieldType = GF_SG_VRML_SFFLOAT;
32429 958 : info->far_ptr = & ((M_XLineProperties *) node)->width;
32430 958 : return GF_OK;
32431 : case 9:
32432 500 : info->name = "dashOffset";
32433 500 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32434 500 : info->fieldType = GF_SG_VRML_SFFLOAT;
32435 500 : info->far_ptr = & ((M_XLineProperties *) node)->dashOffset;
32436 500 : return GF_OK;
32437 : case 10:
32438 530 : info->name = "dashes";
32439 530 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32440 530 : info->fieldType = GF_SG_VRML_MFFLOAT;
32441 530 : info->far_ptr = & ((M_XLineProperties *) node)->dashes;
32442 530 : return GF_OK;
32443 : case 11:
32444 336 : info->name = "texture";
32445 336 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32446 336 : info->fieldType = GF_SG_VRML_SFNODE;
32447 336 : info->NDTtype = NDT_SFTextureNode;
32448 336 : info->far_ptr = & ((M_XLineProperties *)node)->texture;
32449 336 : return GF_OK;
32450 : case 12:
32451 261 : info->name = "textureTransform";
32452 261 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32453 261 : info->fieldType = GF_SG_VRML_SFNODE;
32454 261 : info->NDTtype = NDT_SFTextureTransformNode;
32455 261 : info->far_ptr = & ((M_XLineProperties *)node)->textureTransform;
32456 261 : return GF_OK;
32457 : default:
32458 0 : return GF_BAD_PARAM;
32459 : }
32460 7171 : }
32461 :
32462 :
32463 : static s32 XLineProperties_get_field_index_by_name(char *name)
32464 : {
32465 798 : if (!strcmp("lineColor", name)) return 0;
32466 286 : if (!strcmp("lineStyle", name)) return 1;
32467 276 : if (!strcmp("isCenterAligned", name)) return 2;
32468 240 : if (!strcmp("isScalable", name)) return 3;
32469 244 : if (!strcmp("lineCap", name)) return 4;
32470 212 : if (!strcmp("lineJoin", name)) return 5;
32471 200 : if (!strcmp("miterLimit", name)) return 6;
32472 208 : if (!strcmp("transparency", name)) return 7;
32473 308 : if (!strcmp("width", name)) return 8;
32474 48 : if (!strcmp("dashOffset", name)) return 9;
32475 52 : if (!strcmp("dashes", name)) return 10;
32476 52 : if (!strcmp("texture", name)) return 11;
32477 8 : if (!strcmp("textureTransform", name)) return 12;
32478 0 : return -1;
32479 356 : }
32480 : static Bool XLineProperties_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
32481 : {
32482 0 : switch (FieldIndex) {
32483 : case 0:
32484 0 : *AType = 4;
32485 0 : *QType = 4;
32486 0 : *b_min = FLT2FIX(0);
32487 0 : *b_max = FLT2FIX(1);
32488 0 : return 1;
32489 : case 1:
32490 0 : *AType = 0;
32491 0 : *QType = 13;
32492 0 : *QT13_bits = 3;
32493 0 : *b_min = FLT2FIX(0);
32494 0 : *b_max = FLT2FIX(5);
32495 0 : return 1;
32496 : case 4:
32497 0 : *AType = 0;
32498 0 : *QType = 13;
32499 0 : *QT13_bits = 3;
32500 0 : *b_min = FLT2FIX(0);
32501 0 : *b_max = FLT2FIX(2);
32502 0 : return 1;
32503 : case 5:
32504 0 : *AType = 0;
32505 0 : *QType = 13;
32506 0 : *QT13_bits = 3;
32507 0 : *b_min = FLT2FIX(0);
32508 0 : *b_max = FLT2FIX(2);
32509 0 : return 1;
32510 : case 6:
32511 0 : *AType = 0;
32512 0 : *QType = 12;
32513 0 : *b_min = FLT2FIX(1);
32514 0 : *b_max = FIX_MAX;
32515 0 : return 1;
32516 : case 7:
32517 0 : *AType = 8;
32518 0 : *QType = 4;
32519 0 : *b_min = FLT2FIX(0);
32520 0 : *b_max = FLT2FIX(1);
32521 0 : return 1;
32522 : case 8:
32523 0 : *AType = 7;
32524 0 : *QType = 12;
32525 0 : *b_min = FLT2FIX(0);
32526 0 : *b_max = FIX_MAX;
32527 0 : return 1;
32528 : case 9:
32529 0 : *AType = 7;
32530 0 : *QType = 12;
32531 0 : *b_min = FLT2FIX(0);
32532 0 : *b_max = FIX_MAX;
32533 0 : return 1;
32534 : case 10:
32535 0 : *AType = 7;
32536 0 : *QType = 12;
32537 0 : *b_min = FLT2FIX(0);
32538 0 : *b_max = FIX_MAX;
32539 0 : return 1;
32540 : default:
32541 0 : return 0;
32542 : }
32543 0 : }
32544 :
32545 :
32546 :
32547 : GF_Node *XLineProperties_Create()
32548 : {
32549 : M_XLineProperties *p;
32550 1440 : GF_SAFEALLOC(p, M_XLineProperties);
32551 480 : if(!p) return NULL;
32552 480 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XLineProperties);
32553 :
32554 : /*default field values*/
32555 480 : p->lineColor.red = FLT2FIX(0);
32556 480 : p->lineColor.green = FLT2FIX(0);
32557 480 : p->lineColor.blue = FLT2FIX(0);
32558 480 : p->lineStyle = 0;
32559 480 : p->isCenterAligned = 1;
32560 480 : p->isScalable = 1;
32561 480 : p->lineCap = 0;
32562 480 : p->lineJoin = 0;
32563 480 : p->miterLimit = FLT2FIX(4);
32564 480 : p->transparency = FLT2FIX(0);
32565 480 : p->width = FLT2FIX(1);
32566 480 : p->dashOffset = FLT2FIX(0);
32567 480 : return (GF_Node *)p;
32568 480 : }
32569 :
32570 :
32571 : /*
32572 : AdvancedAudioBuffer Node deletion
32573 : */
32574 :
32575 : static void AdvancedAudioBuffer_Del(GF_Node *node)
32576 : {
32577 0 : M_AdvancedAudioBuffer *p = (M_AdvancedAudioBuffer *) node;
32578 0 : gf_sg_mfint32_del(p->phaseGroup);
32579 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
32580 0 : gf_node_free((GF_Node *) p);
32581 0 : }
32582 :
32583 : static const u16 AdvancedAudioBuffer_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
32584 : static const u16 AdvancedAudioBuffer_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
32585 : static const u16 AdvancedAudioBuffer_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17};
32586 : static const u16 AdvancedAudioBuffer_Dyn2All[] = { 4};
32587 :
32588 : static u32 AdvancedAudioBuffer_get_field_count(GF_Node *node, u8 IndexMode)
32589 : {
32590 0 : switch(IndexMode) {
32591 : case GF_SG_FIELD_CODING_IN:
32592 0 : return 14;
32593 : case GF_SG_FIELD_CODING_DEF:
32594 0 : return 14;
32595 : case GF_SG_FIELD_CODING_OUT:
32596 0 : return 14;
32597 : case GF_SG_FIELD_CODING_DYN:
32598 0 : return 1;
32599 : default:
32600 0 : return 18;
32601 : }
32602 0 : }
32603 :
32604 : static GF_Err AdvancedAudioBuffer_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
32605 : {
32606 0 : switch(IndexMode) {
32607 : case GF_SG_FIELD_CODING_IN:
32608 0 : *allField = AdvancedAudioBuffer_In2All[inField];
32609 0 : return GF_OK;
32610 : case GF_SG_FIELD_CODING_DEF:
32611 0 : *allField = AdvancedAudioBuffer_Def2All[inField];
32612 0 : return GF_OK;
32613 : case GF_SG_FIELD_CODING_OUT:
32614 0 : *allField = AdvancedAudioBuffer_Out2All[inField];
32615 0 : return GF_OK;
32616 : case GF_SG_FIELD_CODING_DYN:
32617 0 : *allField = AdvancedAudioBuffer_Dyn2All[inField];
32618 0 : return GF_OK;
32619 : default:
32620 0 : return GF_BAD_PARAM;
32621 : }
32622 0 : }
32623 : static GF_Err AdvancedAudioBuffer_get_field(GF_Node *node, GF_FieldInfo *info)
32624 : {
32625 0 : switch (info->fieldIndex) {
32626 : case 0:
32627 0 : info->name = "addChildren";
32628 0 : info->eventType = GF_SG_EVENT_IN;
32629 0 : info->on_event_in = ((M_AdvancedAudioBuffer *)node)->on_addChildren;
32630 0 : info->fieldType = GF_SG_VRML_MFNODE;
32631 0 : info->NDTtype = NDT_SFAudioNode;
32632 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *)node)->addChildren;
32633 0 : return GF_OK;
32634 : case 1:
32635 0 : info->name = "removeChildren";
32636 0 : info->eventType = GF_SG_EVENT_IN;
32637 0 : info->on_event_in = ((M_AdvancedAudioBuffer *)node)->on_removeChildren;
32638 0 : info->fieldType = GF_SG_VRML_MFNODE;
32639 0 : info->NDTtype = NDT_SFAudioNode;
32640 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *)node)->removeChildren;
32641 0 : return GF_OK;
32642 : case 2:
32643 0 : info->name = "children";
32644 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32645 0 : info->fieldType = GF_SG_VRML_MFNODE;
32646 0 : info->NDTtype = NDT_SFAudioNode;
32647 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *)node)->children;
32648 0 : return GF_OK;
32649 : case 3:
32650 0 : info->name = "loop";
32651 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32652 0 : info->fieldType = GF_SG_VRML_SFBOOL;
32653 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->loop;
32654 0 : return GF_OK;
32655 : case 4:
32656 0 : info->name = "pitch";
32657 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32658 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
32659 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->pitch;
32660 0 : return GF_OK;
32661 : case 5:
32662 0 : info->name = "startTime";
32663 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32664 0 : info->fieldType = GF_SG_VRML_SFTIME;
32665 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->startTime;
32666 0 : return GF_OK;
32667 : case 6:
32668 0 : info->name = "stopTime";
32669 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32670 0 : info->fieldType = GF_SG_VRML_SFTIME;
32671 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->stopTime;
32672 0 : return GF_OK;
32673 : case 7:
32674 0 : info->name = "startLoadTime";
32675 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32676 0 : info->fieldType = GF_SG_VRML_SFTIME;
32677 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->startLoadTime;
32678 0 : return GF_OK;
32679 : case 8:
32680 0 : info->name = "stopLoadTime";
32681 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32682 0 : info->fieldType = GF_SG_VRML_SFTIME;
32683 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->stopLoadTime;
32684 0 : return GF_OK;
32685 : case 9:
32686 0 : info->name = "loadMode";
32687 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32688 0 : info->fieldType = GF_SG_VRML_SFINT32;
32689 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->loadMode;
32690 0 : return GF_OK;
32691 : case 10:
32692 0 : info->name = "numAccumulatedBlocks";
32693 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32694 0 : info->fieldType = GF_SG_VRML_SFINT32;
32695 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->numAccumulatedBlocks;
32696 0 : return GF_OK;
32697 : case 11:
32698 0 : info->name = "deleteBlock";
32699 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32700 0 : info->fieldType = GF_SG_VRML_SFINT32;
32701 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->deleteBlock;
32702 0 : return GF_OK;
32703 : case 12:
32704 0 : info->name = "playBlock";
32705 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32706 0 : info->fieldType = GF_SG_VRML_SFINT32;
32707 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->playBlock;
32708 0 : return GF_OK;
32709 : case 13:
32710 0 : info->name = "length";
32711 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32712 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
32713 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->length;
32714 0 : return GF_OK;
32715 : case 14:
32716 0 : info->name = "numChan";
32717 0 : info->eventType = GF_SG_EVENT_FIELD;
32718 0 : info->fieldType = GF_SG_VRML_SFINT32;
32719 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->numChan;
32720 0 : return GF_OK;
32721 : case 15:
32722 0 : info->name = "phaseGroup";
32723 0 : info->eventType = GF_SG_EVENT_FIELD;
32724 0 : info->fieldType = GF_SG_VRML_MFINT32;
32725 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->phaseGroup;
32726 0 : return GF_OK;
32727 : case 16:
32728 0 : info->name = "duration_changed";
32729 0 : info->eventType = GF_SG_EVENT_OUT;
32730 0 : info->fieldType = GF_SG_VRML_SFTIME;
32731 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->duration_changed;
32732 0 : return GF_OK;
32733 : case 17:
32734 0 : info->name = "isActive";
32735 0 : info->eventType = GF_SG_EVENT_OUT;
32736 0 : info->fieldType = GF_SG_VRML_SFBOOL;
32737 0 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->isActive;
32738 0 : return GF_OK;
32739 : default:
32740 0 : return GF_BAD_PARAM;
32741 : }
32742 0 : }
32743 :
32744 :
32745 : static s32 AdvancedAudioBuffer_get_field_index_by_name(char *name)
32746 : {
32747 0 : if (!strcmp("addChildren", name)) return 0;
32748 0 : if (!strcmp("removeChildren", name)) return 1;
32749 0 : if (!strcmp("children", name)) return 2;
32750 0 : if (!strcmp("loop", name)) return 3;
32751 0 : if (!strcmp("pitch", name)) return 4;
32752 0 : if (!strcmp("startTime", name)) return 5;
32753 0 : if (!strcmp("stopTime", name)) return 6;
32754 0 : if (!strcmp("startLoadTime", name)) return 7;
32755 0 : if (!strcmp("stopLoadTime", name)) return 8;
32756 0 : if (!strcmp("loadMode", name)) return 9;
32757 0 : if (!strcmp("numAccumulatedBlocks", name)) return 10;
32758 0 : if (!strcmp("deleteBlock", name)) return 11;
32759 0 : if (!strcmp("playBlock", name)) return 12;
32760 0 : if (!strcmp("length", name)) return 13;
32761 0 : if (!strcmp("numChan", name)) return 14;
32762 0 : if (!strcmp("phaseGroup", name)) return 15;
32763 0 : if (!strcmp("duration_changed", name)) return 16;
32764 0 : if (!strcmp("isActive", name)) return 17;
32765 0 : return -1;
32766 0 : }
32767 : static Bool AdvancedAudioBuffer_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
32768 : {
32769 0 : switch (FieldIndex) {
32770 : case 4:
32771 0 : *AType = 7;
32772 0 : *QType = 0;
32773 0 : *b_min = FLT2FIX(0);
32774 0 : *b_max = FIX_MAX;
32775 0 : return 1;
32776 : case 5:
32777 0 : *AType = 0;
32778 0 : *QType = 0;
32779 0 : *b_min = FLT2FIX(0);
32780 0 : *b_max = FIX_MAX;
32781 0 : return 1;
32782 : case 6:
32783 0 : *AType = 0;
32784 0 : *QType = 0;
32785 0 : *b_min = FLT2FIX(0);
32786 0 : *b_max = FIX_MAX;
32787 0 : return 1;
32788 : case 7:
32789 0 : *AType = 0;
32790 0 : *QType = 0;
32791 0 : *b_min = FLT2FIX(0);
32792 0 : *b_max = FIX_MAX;
32793 0 : return 1;
32794 : case 8:
32795 0 : *AType = 0;
32796 0 : *QType = 0;
32797 0 : *b_min = FLT2FIX(0);
32798 0 : *b_max = FIX_MAX;
32799 0 : return 1;
32800 : case 9:
32801 0 : *AType = 0;
32802 0 : *QType = 13;
32803 0 : *QT13_bits = 3;
32804 0 : *b_min = FLT2FIX(0);
32805 0 : *b_max = FLT2FIX(4);
32806 0 : return 1;
32807 : case 10:
32808 0 : *AType = 0;
32809 0 : *QType = 13;
32810 0 : *QT13_bits = 16;
32811 0 : *b_min = FLT2FIX(0);
32812 0 : *b_max = FIX_MAX;
32813 0 : return 1;
32814 : case 11:
32815 0 : *AType = 0;
32816 0 : *QType = 13;
32817 0 : *QT13_bits = 17;
32818 0 : *b_min = FIX_MIN;
32819 0 : *b_max = FLT2FIX( 0);
32820 0 : return 1;
32821 : case 12:
32822 0 : *AType = 0;
32823 0 : *QType = 13;
32824 0 : *QT13_bits = 17;
32825 0 : *b_min = FIX_MIN;
32826 0 : *b_max = FLT2FIX( 0);
32827 0 : return 1;
32828 : case 13:
32829 0 : *AType = 0;
32830 0 : *QType = 0;
32831 0 : *b_min = FLT2FIX(0);
32832 0 : *b_max = FIX_MAX;
32833 0 : return 1;
32834 : case 14:
32835 0 : *AType = 0;
32836 0 : *QType = 13;
32837 0 : *QT13_bits = 8;
32838 0 : *b_min = FLT2FIX(0);
32839 0 : *b_max = FLT2FIX(255);
32840 0 : return 1;
32841 : case 15:
32842 0 : *AType = 0;
32843 0 : *QType = 13;
32844 0 : *QT13_bits = 8;
32845 0 : *b_min = FLT2FIX(0);
32846 0 : *b_max = FLT2FIX(255);
32847 0 : return 1;
32848 : default:
32849 0 : return 0;
32850 : }
32851 0 : }
32852 :
32853 :
32854 :
32855 : GF_Node *AdvancedAudioBuffer_Create()
32856 : {
32857 : M_AdvancedAudioBuffer *p;
32858 0 : GF_SAFEALLOC(p, M_AdvancedAudioBuffer);
32859 0 : if(!p) return NULL;
32860 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AdvancedAudioBuffer);
32861 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
32862 :
32863 : /*default field values*/
32864 0 : p->pitch = FLT2FIX(1.0);
32865 0 : p->startTime = 0;
32866 0 : p->stopTime = 0;
32867 0 : p->startLoadTime = 0;
32868 0 : p->stopLoadTime = 0;
32869 0 : p->loadMode = 0;
32870 0 : p->numAccumulatedBlocks = 0;
32871 0 : p->deleteBlock = 0;
32872 0 : p->playBlock = 0;
32873 0 : p->length = FLT2FIX(0.0);
32874 0 : p->numChan = 1;
32875 0 : return (GF_Node *)p;
32876 0 : }
32877 :
32878 :
32879 : /*
32880 : AudioChannelConfig Node deletion
32881 : */
32882 :
32883 : static void AudioChannelConfig_Del(GF_Node *node)
32884 : {
32885 0 : M_AudioChannelConfig *p = (M_AudioChannelConfig *) node;
32886 0 : gf_sg_mfint32_del(p->channelCoordinateSystems);
32887 0 : gf_sg_mffloat_del(p->channelSoundLocation);
32888 0 : gf_sg_mfint32_del(p->channelDirectionalPattern);
32889 0 : gf_sg_mfvec3f_del(p->channelDirection);
32890 0 : gf_sg_mfint32_del(p->ambComponentIndex);
32891 0 : gf_sg_mffloat_del(p->ambBackwardMatrix);
32892 0 : gf_sg_mfint32_del(p->ambSoundfieldResolution);
32893 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
32894 0 : gf_node_free((GF_Node *) p);
32895 0 : }
32896 :
32897 : static const u16 AudioChannelConfig_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21};
32898 : static const u16 AudioChannelConfig_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
32899 : static const u16 AudioChannelConfig_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
32900 :
32901 : static u32 AudioChannelConfig_get_field_count(GF_Node *node, u8 IndexMode)
32902 : {
32903 0 : switch(IndexMode) {
32904 : case GF_SG_FIELD_CODING_IN:
32905 0 : return 21;
32906 : case GF_SG_FIELD_CODING_DEF:
32907 0 : return 20;
32908 : case GF_SG_FIELD_CODING_OUT:
32909 0 : return 19;
32910 : case GF_SG_FIELD_CODING_DYN:
32911 0 : return 0;
32912 : default:
32913 0 : return 22;
32914 : }
32915 0 : }
32916 :
32917 : static GF_Err AudioChannelConfig_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
32918 : {
32919 0 : switch(IndexMode) {
32920 : case GF_SG_FIELD_CODING_IN:
32921 0 : *allField = AudioChannelConfig_In2All[inField];
32922 0 : return GF_OK;
32923 : case GF_SG_FIELD_CODING_DEF:
32924 0 : *allField = AudioChannelConfig_Def2All[inField];
32925 0 : return GF_OK;
32926 : case GF_SG_FIELD_CODING_OUT:
32927 0 : *allField = AudioChannelConfig_Out2All[inField];
32928 0 : return GF_OK;
32929 : default:
32930 0 : return GF_BAD_PARAM;
32931 : }
32932 0 : }
32933 : static GF_Err AudioChannelConfig_get_field(GF_Node *node, GF_FieldInfo *info)
32934 : {
32935 0 : switch (info->fieldIndex) {
32936 : case 0:
32937 0 : info->name = "addChildren";
32938 0 : info->eventType = GF_SG_EVENT_IN;
32939 0 : info->on_event_in = ((M_AudioChannelConfig *)node)->on_addChildren;
32940 0 : info->fieldType = GF_SG_VRML_MFNODE;
32941 0 : info->NDTtype = NDT_SFAudioNode;
32942 0 : info->far_ptr = & ((M_AudioChannelConfig *)node)->addChildren;
32943 0 : return GF_OK;
32944 : case 1:
32945 0 : info->name = "removeChildren";
32946 0 : info->eventType = GF_SG_EVENT_IN;
32947 0 : info->on_event_in = ((M_AudioChannelConfig *)node)->on_removeChildren;
32948 0 : info->fieldType = GF_SG_VRML_MFNODE;
32949 0 : info->NDTtype = NDT_SFAudioNode;
32950 0 : info->far_ptr = & ((M_AudioChannelConfig *)node)->removeChildren;
32951 0 : return GF_OK;
32952 : case 2:
32953 0 : info->name = "children";
32954 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32955 0 : info->fieldType = GF_SG_VRML_MFNODE;
32956 0 : info->NDTtype = NDT_SFAudioNode;
32957 0 : info->far_ptr = & ((M_AudioChannelConfig *)node)->children;
32958 0 : return GF_OK;
32959 : case 3:
32960 0 : info->name = "generalChannelFormat";
32961 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32962 0 : info->fieldType = GF_SG_VRML_SFINT32;
32963 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->generalChannelFormat;
32964 0 : return GF_OK;
32965 : case 4:
32966 0 : info->name = "fixedPreset";
32967 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32968 0 : info->fieldType = GF_SG_VRML_SFINT32;
32969 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->fixedPreset;
32970 0 : return GF_OK;
32971 : case 5:
32972 0 : info->name = "fixedPresetSubset";
32973 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32974 0 : info->fieldType = GF_SG_VRML_SFINT32;
32975 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->fixedPresetSubset;
32976 0 : return GF_OK;
32977 : case 6:
32978 0 : info->name = "fixedPresetAddInf";
32979 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32980 0 : info->fieldType = GF_SG_VRML_SFINT32;
32981 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->fixedPresetAddInf;
32982 0 : return GF_OK;
32983 : case 7:
32984 0 : info->name = "channelCoordinateSystems";
32985 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32986 0 : info->fieldType = GF_SG_VRML_MFINT32;
32987 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->channelCoordinateSystems;
32988 0 : return GF_OK;
32989 : case 8:
32990 0 : info->name = "channelSoundLocation";
32991 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32992 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
32993 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->channelSoundLocation;
32994 0 : return GF_OK;
32995 : case 9:
32996 0 : info->name = "channelDirectionalPattern";
32997 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32998 0 : info->fieldType = GF_SG_VRML_MFINT32;
32999 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->channelDirectionalPattern;
33000 0 : return GF_OK;
33001 : case 10:
33002 0 : info->name = "channelDirection";
33003 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33004 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
33005 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->channelDirection;
33006 0 : return GF_OK;
33007 : case 11:
33008 0 : info->name = "ambResolution2D";
33009 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33010 0 : info->fieldType = GF_SG_VRML_SFINT32;
33011 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambResolution2D;
33012 0 : return GF_OK;
33013 : case 12:
33014 0 : info->name = "ambResolution3D";
33015 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33016 0 : info->fieldType = GF_SG_VRML_SFINT32;
33017 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambResolution3D;
33018 0 : return GF_OK;
33019 : case 13:
33020 0 : info->name = "ambEncodingConvention";
33021 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33022 0 : info->fieldType = GF_SG_VRML_SFINT32;
33023 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambEncodingConvention;
33024 0 : return GF_OK;
33025 : case 14:
33026 0 : info->name = "ambNfcReferenceDistance";
33027 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33028 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
33029 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambNfcReferenceDistance;
33030 0 : return GF_OK;
33031 : case 15:
33032 0 : info->name = "ambSoundSpeed";
33033 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33034 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
33035 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambSoundSpeed;
33036 0 : return GF_OK;
33037 : case 16:
33038 0 : info->name = "ambArrangementRule";
33039 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33040 0 : info->fieldType = GF_SG_VRML_SFINT32;
33041 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambArrangementRule;
33042 0 : return GF_OK;
33043 : case 17:
33044 0 : info->name = "ambRecombinationPreset";
33045 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33046 0 : info->fieldType = GF_SG_VRML_SFINT32;
33047 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambRecombinationPreset;
33048 0 : return GF_OK;
33049 : case 18:
33050 0 : info->name = "ambComponentIndex";
33051 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33052 0 : info->fieldType = GF_SG_VRML_MFINT32;
33053 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambComponentIndex;
33054 0 : return GF_OK;
33055 : case 19:
33056 0 : info->name = "ambBackwardMatrix";
33057 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33058 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
33059 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambBackwardMatrix;
33060 0 : return GF_OK;
33061 : case 20:
33062 0 : info->name = "ambSoundfieldResolution";
33063 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33064 0 : info->fieldType = GF_SG_VRML_MFINT32;
33065 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambSoundfieldResolution;
33066 0 : return GF_OK;
33067 : case 21:
33068 0 : info->name = "numChannel";
33069 0 : info->eventType = GF_SG_EVENT_FIELD;
33070 0 : info->fieldType = GF_SG_VRML_SFINT32;
33071 0 : info->far_ptr = & ((M_AudioChannelConfig *) node)->numChannel;
33072 0 : return GF_OK;
33073 : default:
33074 0 : return GF_BAD_PARAM;
33075 : }
33076 0 : }
33077 :
33078 :
33079 : static s32 AudioChannelConfig_get_field_index_by_name(char *name)
33080 : {
33081 0 : if (!strcmp("addChildren", name)) return 0;
33082 0 : if (!strcmp("removeChildren", name)) return 1;
33083 0 : if (!strcmp("children", name)) return 2;
33084 0 : if (!strcmp("generalChannelFormat", name)) return 3;
33085 0 : if (!strcmp("fixedPreset", name)) return 4;
33086 0 : if (!strcmp("fixedPresetSubset", name)) return 5;
33087 0 : if (!strcmp("fixedPresetAddInf", name)) return 6;
33088 0 : if (!strcmp("channelCoordinateSystems", name)) return 7;
33089 0 : if (!strcmp("channelSoundLocation", name)) return 8;
33090 0 : if (!strcmp("channelDirectionalPattern", name)) return 9;
33091 0 : if (!strcmp("channelDirection", name)) return 10;
33092 0 : if (!strcmp("ambResolution2D", name)) return 11;
33093 0 : if (!strcmp("ambResolution3D", name)) return 12;
33094 0 : if (!strcmp("ambEncodingConvention", name)) return 13;
33095 0 : if (!strcmp("ambNfcReferenceDistance", name)) return 14;
33096 0 : if (!strcmp("ambSoundSpeed", name)) return 15;
33097 0 : if (!strcmp("ambArrangementRule", name)) return 16;
33098 0 : if (!strcmp("ambRecombinationPreset", name)) return 17;
33099 0 : if (!strcmp("ambComponentIndex", name)) return 18;
33100 0 : if (!strcmp("ambBackwardMatrix", name)) return 19;
33101 0 : if (!strcmp("ambSoundfieldResolution", name)) return 20;
33102 0 : if (!strcmp("numChannel", name)) return 21;
33103 0 : return -1;
33104 0 : }
33105 : static Bool AudioChannelConfig_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
33106 : {
33107 0 : switch (FieldIndex) {
33108 : case 3:
33109 0 : *AType = 0;
33110 0 : *QType = 13;
33111 0 : *QT13_bits = 3;
33112 0 : *b_min = FLT2FIX(0);
33113 0 : *b_max = FLT2FIX(4);
33114 0 : return 1;
33115 : case 4:
33116 0 : *AType = 0;
33117 0 : *QType = 13;
33118 0 : *QT13_bits = 4;
33119 0 : *b_min = FLT2FIX(0);
33120 0 : *b_max = FLT2FIX(15);
33121 0 : return 1;
33122 : case 6:
33123 0 : *AType = 0;
33124 0 : *QType = 13;
33125 0 : *QT13_bits = 3;
33126 0 : *b_min = FLT2FIX(0);
33127 0 : *b_max = FLT2FIX(2);
33128 0 : return 1;
33129 : case 7:
33130 0 : *AType = 0;
33131 0 : *QType = 13;
33132 0 : *QT13_bits = 3;
33133 0 : *b_min = FLT2FIX(0);
33134 0 : *b_max = FLT2FIX(6);
33135 0 : return 1;
33136 : case 9:
33137 0 : *AType = 0;
33138 0 : *QType = 13;
33139 0 : *QT13_bits = 3;
33140 0 : *b_min = FLT2FIX(0);
33141 0 : *b_max = FLT2FIX(2);
33142 0 : return 1;
33143 : case 11:
33144 0 : *AType = 0;
33145 0 : *QType = 13;
33146 0 : *QT13_bits = 7;
33147 0 : *b_min = FLT2FIX(0);
33148 0 : *b_max = FLT2FIX(127);
33149 0 : return 1;
33150 : case 12:
33151 0 : *AType = 0;
33152 0 : *QType = 13;
33153 0 : *QT13_bits = 4;
33154 0 : *b_min = FLT2FIX(0);
33155 0 : *b_max = FLT2FIX(15);
33156 0 : return 1;
33157 : case 13:
33158 0 : *AType = 0;
33159 0 : *QType = 13;
33160 0 : *QT13_bits = 3;
33161 0 : *b_min = FLT2FIX(0);
33162 0 : *b_max = FLT2FIX(5);
33163 0 : return 1;
33164 : case 16:
33165 0 : *AType = 0;
33166 0 : *QType = 13;
33167 0 : *QT13_bits = 3;
33168 0 : *b_min = FLT2FIX(0);
33169 0 : *b_max = FLT2FIX(7);
33170 0 : return 1;
33171 : case 17:
33172 0 : *AType = 0;
33173 0 : *QType = 13;
33174 0 : *QT13_bits = 4;
33175 0 : *b_min = FLT2FIX(0);
33176 0 : *b_max = FLT2FIX(15);
33177 0 : return 1;
33178 : case 18:
33179 0 : *AType = 0;
33180 0 : *QType = 13;
33181 0 : *QT13_bits = 8;
33182 0 : *b_min = FLT2FIX(0);
33183 0 : *b_max = FLT2FIX(255);
33184 0 : return 1;
33185 : case 20:
33186 0 : *AType = 0;
33187 0 : *QType = 13;
33188 0 : *QT13_bits = 7;
33189 0 : *b_min = FLT2FIX(0);
33190 0 : *b_max = FLT2FIX(127);
33191 0 : return 1;
33192 : case 21:
33193 0 : *AType = 0;
33194 0 : *QType = 13;
33195 0 : *QT13_bits = 8;
33196 0 : *b_min = FLT2FIX(0);
33197 0 : *b_max = FLT2FIX(255);
33198 0 : return 1;
33199 : default:
33200 0 : return 0;
33201 : }
33202 0 : }
33203 :
33204 :
33205 :
33206 : GF_Node *AudioChannelConfig_Create()
33207 : {
33208 : M_AudioChannelConfig *p;
33209 0 : GF_SAFEALLOC(p, M_AudioChannelConfig);
33210 0 : if(!p) return NULL;
33211 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioChannelConfig);
33212 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
33213 :
33214 : /*default field values*/
33215 0 : p->generalChannelFormat = 0;
33216 0 : p->fixedPreset = 0;
33217 0 : p->fixedPresetSubset = 0;
33218 0 : p->fixedPresetAddInf = 0;
33219 0 : p->ambResolution2D = 1;
33220 0 : p->ambResolution3D = 0;
33221 0 : p->ambEncodingConvention = 0;
33222 0 : p->ambNfcReferenceDistance = FLT2FIX(1.5);
33223 0 : p->ambSoundSpeed = FLT2FIX(340.0);
33224 0 : p->ambArrangementRule = 0;
33225 0 : p->ambRecombinationPreset = 0;
33226 0 : p->numChannel = 0;
33227 0 : return (GF_Node *)p;
33228 0 : }
33229 :
33230 :
33231 : /*
33232 : DepthImageV2 Node deletion
33233 : */
33234 :
33235 : static void DepthImageV2_Del(GF_Node *node)
33236 : {
33237 0 : M_DepthImageV2 *p = (M_DepthImageV2 *) node;
33238 0 : gf_node_unregister((GF_Node *) p->diTexture, (GF_Node *) p);
33239 0 : gf_node_free((GF_Node *) p);
33240 0 : }
33241 :
33242 : static const u16 DepthImageV2_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
33243 :
33244 : static u32 DepthImageV2_get_field_count(GF_Node *node, u8 IndexMode)
33245 : {
33246 0 : switch(IndexMode) {
33247 : case GF_SG_FIELD_CODING_IN:
33248 0 : return 0;
33249 : case GF_SG_FIELD_CODING_DEF:
33250 0 : return 8;
33251 : case GF_SG_FIELD_CODING_OUT:
33252 0 : return 0;
33253 : case GF_SG_FIELD_CODING_DYN:
33254 0 : return 0;
33255 : default:
33256 0 : return 8;
33257 : }
33258 0 : }
33259 :
33260 : static GF_Err DepthImageV2_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
33261 : {
33262 0 : switch(IndexMode) {
33263 : case GF_SG_FIELD_CODING_DEF:
33264 0 : *allField = DepthImageV2_Def2All[inField];
33265 0 : return GF_OK;
33266 : default:
33267 0 : return GF_BAD_PARAM;
33268 : }
33269 0 : }
33270 : static GF_Err DepthImageV2_get_field(GF_Node *node, GF_FieldInfo *info)
33271 : {
33272 0 : switch (info->fieldIndex) {
33273 : case 0:
33274 0 : info->name = "diTexture";
33275 0 : info->eventType = GF_SG_EVENT_FIELD;
33276 0 : info->fieldType = GF_SG_VRML_SFNODE;
33277 0 : info->NDTtype = NDT_SFDepthTextureNode;
33278 0 : info->far_ptr = & ((M_DepthImageV2 *)node)->diTexture;
33279 0 : return GF_OK;
33280 : case 1:
33281 0 : info->name = "farPlane";
33282 0 : info->eventType = GF_SG_EVENT_FIELD;
33283 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
33284 0 : info->far_ptr = & ((M_DepthImageV2 *) node)->farPlane;
33285 0 : return GF_OK;
33286 : case 2:
33287 0 : info->name = "fieldOfView";
33288 0 : info->eventType = GF_SG_EVENT_FIELD;
33289 0 : info->fieldType = GF_SG_VRML_SFVEC2F;
33290 0 : info->far_ptr = & ((M_DepthImageV2 *) node)->fieldOfView;
33291 0 : return GF_OK;
33292 : case 3:
33293 0 : info->name = "nearPlane";
33294 0 : info->eventType = GF_SG_EVENT_FIELD;
33295 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
33296 0 : info->far_ptr = & ((M_DepthImageV2 *) node)->nearPlane;
33297 0 : return GF_OK;
33298 : case 4:
33299 0 : info->name = "orientation";
33300 0 : info->eventType = GF_SG_EVENT_FIELD;
33301 0 : info->fieldType = GF_SG_VRML_SFROTATION;
33302 0 : info->far_ptr = & ((M_DepthImageV2 *) node)->orientation;
33303 0 : return GF_OK;
33304 : case 5:
33305 0 : info->name = "orthographic";
33306 0 : info->eventType = GF_SG_EVENT_FIELD;
33307 0 : info->fieldType = GF_SG_VRML_SFBOOL;
33308 0 : info->far_ptr = & ((M_DepthImageV2 *) node)->orthographic;
33309 0 : return GF_OK;
33310 : case 6:
33311 0 : info->name = "position";
33312 0 : info->eventType = GF_SG_EVENT_FIELD;
33313 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
33314 0 : info->far_ptr = & ((M_DepthImageV2 *) node)->position;
33315 0 : return GF_OK;
33316 : case 7:
33317 0 : info->name = "splatMinMax";
33318 0 : info->eventType = GF_SG_EVENT_FIELD;
33319 0 : info->fieldType = GF_SG_VRML_SFVEC2F;
33320 0 : info->far_ptr = & ((M_DepthImageV2 *) node)->splatMinMax;
33321 0 : return GF_OK;
33322 : default:
33323 0 : return GF_BAD_PARAM;
33324 : }
33325 0 : }
33326 :
33327 :
33328 : static s32 DepthImageV2_get_field_index_by_name(char *name)
33329 : {
33330 0 : if (!strcmp("diTexture", name)) return 0;
33331 0 : if (!strcmp("farPlane", name)) return 1;
33332 0 : if (!strcmp("fieldOfView", name)) return 2;
33333 0 : if (!strcmp("nearPlane", name)) return 3;
33334 0 : if (!strcmp("orientation", name)) return 4;
33335 0 : if (!strcmp("orthographic", name)) return 5;
33336 0 : if (!strcmp("position", name)) return 6;
33337 0 : if (!strcmp("splatMinMax", name)) return 7;
33338 0 : return -1;
33339 0 : }
33340 : static Bool DepthImageV2_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
33341 : {
33342 : switch (FieldIndex) {
33343 : default:
33344 0 : return 0;
33345 : }
33346 : }
33347 :
33348 :
33349 :
33350 : GF_Node *DepthImageV2_Create()
33351 : {
33352 : M_DepthImageV2 *p;
33353 0 : GF_SAFEALLOC(p, M_DepthImageV2);
33354 0 : if(!p) return NULL;
33355 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_DepthImageV2);
33356 :
33357 : /*default field values*/
33358 0 : p->farPlane = FLT2FIX(100);
33359 0 : p->fieldOfView.x = FLT2FIX(0.75);
33360 0 : p->fieldOfView.y = FLT2FIX(0.75);
33361 0 : p->nearPlane = FLT2FIX(10);
33362 0 : p->orientation.x = FLT2FIX(0);
33363 0 : p->orientation.y = FLT2FIX(0);
33364 0 : p->orientation.z = FLT2FIX(1);
33365 0 : p->orientation.q = FLT2FIX(0);
33366 0 : p->orthographic = 1;
33367 0 : p->position.x = FLT2FIX(0);
33368 0 : p->position.y = FLT2FIX(0);
33369 0 : p->position.z = FLT2FIX(10);
33370 0 : p->splatMinMax.x = FLT2FIX(0.115);
33371 0 : p->splatMinMax.y = FLT2FIX(0.975);
33372 0 : return (GF_Node *)p;
33373 0 : }
33374 :
33375 :
33376 : /*
33377 : MorphShape Node deletion
33378 : */
33379 :
33380 : static void MorphShape_Del(GF_Node *node)
33381 : {
33382 0 : M_MorphShape *p = (M_MorphShape *) node;
33383 0 : gf_node_unregister((GF_Node *) p->baseShape, (GF_Node *) p);
33384 0 : gf_node_unregister_children((GF_Node *) p, p->targetShapes);
33385 0 : gf_sg_mffloat_del(p->weights);
33386 0 : gf_node_free((GF_Node *) p);
33387 0 : }
33388 :
33389 : static const u16 MorphShape_Def2All[] = { 0, 1, 2, 3};
33390 : static const u16 MorphShape_In2All[] = { 0, 1, 2, 3};
33391 : static const u16 MorphShape_Out2All[] = { 0, 1, 2, 3};
33392 :
33393 : static u32 MorphShape_get_field_count(GF_Node *node, u8 IndexMode)
33394 : {
33395 0 : switch(IndexMode) {
33396 : case GF_SG_FIELD_CODING_IN:
33397 0 : return 4;
33398 : case GF_SG_FIELD_CODING_DEF:
33399 0 : return 4;
33400 : case GF_SG_FIELD_CODING_OUT:
33401 0 : return 4;
33402 : case GF_SG_FIELD_CODING_DYN:
33403 0 : return 0;
33404 : default:
33405 0 : return 4;
33406 : }
33407 0 : }
33408 :
33409 : static GF_Err MorphShape_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
33410 : {
33411 0 : switch(IndexMode) {
33412 : case GF_SG_FIELD_CODING_IN:
33413 0 : *allField = MorphShape_In2All[inField];
33414 0 : return GF_OK;
33415 : case GF_SG_FIELD_CODING_DEF:
33416 0 : *allField = MorphShape_Def2All[inField];
33417 0 : return GF_OK;
33418 : case GF_SG_FIELD_CODING_OUT:
33419 0 : *allField = MorphShape_Out2All[inField];
33420 0 : return GF_OK;
33421 : default:
33422 0 : return GF_BAD_PARAM;
33423 : }
33424 0 : }
33425 : static GF_Err MorphShape_get_field(GF_Node *node, GF_FieldInfo *info)
33426 : {
33427 0 : switch (info->fieldIndex) {
33428 : case 0:
33429 0 : info->name = "baseShape";
33430 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33431 0 : info->fieldType = GF_SG_VRML_SFNODE;
33432 0 : info->NDTtype = NDT_SF3DNode;
33433 0 : info->far_ptr = & ((M_MorphShape *)node)->baseShape;
33434 0 : return GF_OK;
33435 : case 1:
33436 0 : info->name = "morphID";
33437 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33438 0 : info->fieldType = GF_SG_VRML_SFINT32;
33439 0 : info->far_ptr = & ((M_MorphShape *) node)->morphID;
33440 0 : return GF_OK;
33441 : case 2:
33442 0 : info->name = "targetShapes";
33443 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33444 0 : info->fieldType = GF_SG_VRML_MFNODE;
33445 0 : info->NDTtype = NDT_SF3DNode;
33446 0 : info->far_ptr = & ((M_MorphShape *)node)->targetShapes;
33447 0 : return GF_OK;
33448 : case 3:
33449 0 : info->name = "weights";
33450 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33451 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
33452 0 : info->far_ptr = & ((M_MorphShape *) node)->weights;
33453 0 : return GF_OK;
33454 : default:
33455 0 : return GF_BAD_PARAM;
33456 : }
33457 0 : }
33458 :
33459 :
33460 : static s32 MorphShape_get_field_index_by_name(char *name)
33461 : {
33462 0 : if (!strcmp("baseShape", name)) return 0;
33463 0 : if (!strcmp("morphID", name)) return 1;
33464 0 : if (!strcmp("targetShapes", name)) return 2;
33465 0 : if (!strcmp("weights", name)) return 3;
33466 0 : return -1;
33467 0 : }
33468 : static Bool MorphShape_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
33469 : {
33470 0 : switch (FieldIndex) {
33471 : case 1:
33472 0 : *AType = 0;
33473 0 : *QType = 13;
33474 0 : *QT13_bits = 7;
33475 0 : *b_min = FLT2FIX(0);
33476 0 : *b_max = FLT2FIX( 1023);
33477 0 : return 1;
33478 : default:
33479 0 : return 0;
33480 : }
33481 0 : }
33482 :
33483 :
33484 :
33485 : GF_Node *MorphShape_Create()
33486 : {
33487 : M_MorphShape *p;
33488 0 : GF_SAFEALLOC(p, M_MorphShape);
33489 0 : if(!p) return NULL;
33490 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MorphShape);
33491 :
33492 : /*default field values*/
33493 0 : p->morphID = 0;
33494 0 : return (GF_Node *)p;
33495 0 : }
33496 :
33497 :
33498 : /*
33499 : MultiTexture Node deletion
33500 : */
33501 :
33502 : static void MultiTexture_Del(GF_Node *node)
33503 : {
33504 0 : M_MultiTexture *p = (M_MultiTexture *) node;
33505 0 : gf_sg_mfint32_del(p->function);
33506 0 : gf_sg_mfint32_del(p->mode);
33507 0 : gf_sg_mfint32_del(p->source);
33508 0 : gf_node_unregister_children((GF_Node *) p, p->texture);
33509 0 : gf_sg_mfvec3f_del(p->cameraVector);
33510 0 : gf_node_free((GF_Node *) p);
33511 0 : }
33512 :
33513 : static const u16 MultiTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
33514 : static const u16 MultiTexture_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
33515 : static const u16 MultiTexture_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
33516 :
33517 : static u32 MultiTexture_get_field_count(GF_Node *node, u8 IndexMode)
33518 : {
33519 0 : switch(IndexMode) {
33520 : case GF_SG_FIELD_CODING_IN:
33521 0 : return 8;
33522 : case GF_SG_FIELD_CODING_DEF:
33523 0 : return 8;
33524 : case GF_SG_FIELD_CODING_OUT:
33525 0 : return 8;
33526 : case GF_SG_FIELD_CODING_DYN:
33527 0 : return 0;
33528 : default:
33529 0 : return 8;
33530 : }
33531 0 : }
33532 :
33533 : static GF_Err MultiTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
33534 : {
33535 0 : switch(IndexMode) {
33536 : case GF_SG_FIELD_CODING_IN:
33537 0 : *allField = MultiTexture_In2All[inField];
33538 0 : return GF_OK;
33539 : case GF_SG_FIELD_CODING_DEF:
33540 0 : *allField = MultiTexture_Def2All[inField];
33541 0 : return GF_OK;
33542 : case GF_SG_FIELD_CODING_OUT:
33543 0 : *allField = MultiTexture_Out2All[inField];
33544 0 : return GF_OK;
33545 : default:
33546 0 : return GF_BAD_PARAM;
33547 : }
33548 0 : }
33549 : static GF_Err MultiTexture_get_field(GF_Node *node, GF_FieldInfo *info)
33550 : {
33551 0 : switch (info->fieldIndex) {
33552 : case 0:
33553 0 : info->name = "alpha";
33554 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33555 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
33556 0 : info->far_ptr = & ((M_MultiTexture *) node)->alpha;
33557 0 : return GF_OK;
33558 : case 1:
33559 0 : info->name = "color";
33560 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33561 0 : info->fieldType = GF_SG_VRML_SFCOLOR;
33562 0 : info->far_ptr = & ((M_MultiTexture *) node)->color;
33563 0 : return GF_OK;
33564 : case 2:
33565 0 : info->name = "function";
33566 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33567 0 : info->fieldType = GF_SG_VRML_MFINT32;
33568 0 : info->far_ptr = & ((M_MultiTexture *) node)->function;
33569 0 : return GF_OK;
33570 : case 3:
33571 0 : info->name = "mode";
33572 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33573 0 : info->fieldType = GF_SG_VRML_MFINT32;
33574 0 : info->far_ptr = & ((M_MultiTexture *) node)->mode;
33575 0 : return GF_OK;
33576 : case 4:
33577 0 : info->name = "source";
33578 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33579 0 : info->fieldType = GF_SG_VRML_MFINT32;
33580 0 : info->far_ptr = & ((M_MultiTexture *) node)->source;
33581 0 : return GF_OK;
33582 : case 5:
33583 0 : info->name = "texture";
33584 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33585 0 : info->fieldType = GF_SG_VRML_MFNODE;
33586 0 : info->NDTtype = NDT_SFTextureNode;
33587 0 : info->far_ptr = & ((M_MultiTexture *)node)->texture;
33588 0 : return GF_OK;
33589 : case 6:
33590 0 : info->name = "cameraVector";
33591 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33592 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
33593 0 : info->far_ptr = & ((M_MultiTexture *) node)->cameraVector;
33594 0 : return GF_OK;
33595 : case 7:
33596 0 : info->name = "transparent";
33597 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33598 0 : info->fieldType = GF_SG_VRML_SFBOOL;
33599 0 : info->far_ptr = & ((M_MultiTexture *) node)->transparent;
33600 0 : return GF_OK;
33601 : default:
33602 0 : return GF_BAD_PARAM;
33603 : }
33604 0 : }
33605 :
33606 :
33607 : static s32 MultiTexture_get_field_index_by_name(char *name)
33608 : {
33609 0 : if (!strcmp("alpha", name)) return 0;
33610 0 : if (!strcmp("color", name)) return 1;
33611 0 : if (!strcmp("function", name)) return 2;
33612 0 : if (!strcmp("mode", name)) return 3;
33613 0 : if (!strcmp("source", name)) return 4;
33614 0 : if (!strcmp("texture", name)) return 5;
33615 0 : if (!strcmp("cameraVector", name)) return 6;
33616 0 : if (!strcmp("transparent", name)) return 7;
33617 0 : return -1;
33618 0 : }
33619 : static Bool MultiTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
33620 : {
33621 : switch (FieldIndex) {
33622 : default:
33623 0 : return 0;
33624 : }
33625 : }
33626 :
33627 :
33628 :
33629 : GF_Node *MultiTexture_Create()
33630 : {
33631 : M_MultiTexture *p;
33632 0 : GF_SAFEALLOC(p, M_MultiTexture);
33633 0 : if(!p) return NULL;
33634 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MultiTexture);
33635 :
33636 : /*default field values*/
33637 0 : p->alpha = FLT2FIX(1);
33638 0 : p->color.red = FLT2FIX(1);
33639 0 : p->color.green = FLT2FIX(1);
33640 0 : p->color.blue = FLT2FIX(1);
33641 0 : return (GF_Node *)p;
33642 0 : }
33643 :
33644 :
33645 : /*
33646 : PointTextureV2 Node deletion
33647 : */
33648 :
33649 : static void PointTextureV2_Del(GF_Node *node)
33650 : {
33651 0 : M_PointTextureV2 *p = (M_PointTextureV2 *) node;
33652 0 : gf_sg_mfcolor_del(p->color);
33653 0 : gf_sg_mfint32_del(p->depth);
33654 0 : gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
33655 0 : gf_sg_mfvec3f_del(p->splatU);
33656 0 : gf_sg_mfvec3f_del(p->splatV);
33657 0 : gf_node_free((GF_Node *) p);
33658 0 : }
33659 :
33660 : static const u16 PointTextureV2_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
33661 :
33662 : static u32 PointTextureV2_get_field_count(GF_Node *node, u8 IndexMode)
33663 : {
33664 0 : switch(IndexMode) {
33665 : case GF_SG_FIELD_CODING_IN:
33666 0 : return 0;
33667 : case GF_SG_FIELD_CODING_DEF:
33668 0 : return 8;
33669 : case GF_SG_FIELD_CODING_OUT:
33670 0 : return 0;
33671 : case GF_SG_FIELD_CODING_DYN:
33672 0 : return 0;
33673 : default:
33674 0 : return 8;
33675 : }
33676 0 : }
33677 :
33678 : static GF_Err PointTextureV2_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
33679 : {
33680 0 : switch(IndexMode) {
33681 : case GF_SG_FIELD_CODING_DEF:
33682 0 : *allField = PointTextureV2_Def2All[inField];
33683 0 : return GF_OK;
33684 : default:
33685 0 : return GF_BAD_PARAM;
33686 : }
33687 0 : }
33688 : static GF_Err PointTextureV2_get_field(GF_Node *node, GF_FieldInfo *info)
33689 : {
33690 0 : switch (info->fieldIndex) {
33691 : case 0:
33692 0 : info->name = "color";
33693 0 : info->eventType = GF_SG_EVENT_FIELD;
33694 0 : info->fieldType = GF_SG_VRML_MFCOLOR;
33695 0 : info->far_ptr = & ((M_PointTextureV2 *) node)->color;
33696 0 : return GF_OK;
33697 : case 1:
33698 0 : info->name = "depth";
33699 0 : info->eventType = GF_SG_EVENT_FIELD;
33700 0 : info->fieldType = GF_SG_VRML_MFINT32;
33701 0 : info->far_ptr = & ((M_PointTextureV2 *) node)->depth;
33702 0 : return GF_OK;
33703 : case 2:
33704 0 : info->name = "depthNbBits";
33705 0 : info->eventType = GF_SG_EVENT_FIELD;
33706 0 : info->fieldType = GF_SG_VRML_SFINT32;
33707 0 : info->far_ptr = & ((M_PointTextureV2 *) node)->depthNbBits;
33708 0 : return GF_OK;
33709 : case 3:
33710 0 : info->name = "height";
33711 0 : info->eventType = GF_SG_EVENT_FIELD;
33712 0 : info->fieldType = GF_SG_VRML_SFINT32;
33713 0 : info->far_ptr = & ((M_PointTextureV2 *) node)->height;
33714 0 : return GF_OK;
33715 : case 4:
33716 0 : info->name = "normal";
33717 0 : info->eventType = GF_SG_EVENT_FIELD;
33718 0 : info->fieldType = GF_SG_VRML_SFNODE;
33719 0 : info->NDTtype = NDT_SFNormalNode;
33720 0 : info->far_ptr = & ((M_PointTextureV2 *)node)->normal;
33721 0 : return GF_OK;
33722 : case 5:
33723 0 : info->name = "splatU";
33724 0 : info->eventType = GF_SG_EVENT_FIELD;
33725 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
33726 0 : info->far_ptr = & ((M_PointTextureV2 *) node)->splatU;
33727 0 : return GF_OK;
33728 : case 6:
33729 0 : info->name = "splatV";
33730 0 : info->eventType = GF_SG_EVENT_FIELD;
33731 0 : info->fieldType = GF_SG_VRML_MFVEC3F;
33732 0 : info->far_ptr = & ((M_PointTextureV2 *) node)->splatV;
33733 0 : return GF_OK;
33734 : case 7:
33735 0 : info->name = "width";
33736 0 : info->eventType = GF_SG_EVENT_FIELD;
33737 0 : info->fieldType = GF_SG_VRML_SFINT32;
33738 0 : info->far_ptr = & ((M_PointTextureV2 *) node)->width;
33739 0 : return GF_OK;
33740 : default:
33741 0 : return GF_BAD_PARAM;
33742 : }
33743 0 : }
33744 :
33745 :
33746 : static s32 PointTextureV2_get_field_index_by_name(char *name)
33747 : {
33748 0 : if (!strcmp("color", name)) return 0;
33749 0 : if (!strcmp("depth", name)) return 1;
33750 0 : if (!strcmp("depthNbBits", name)) return 2;
33751 0 : if (!strcmp("height", name)) return 3;
33752 0 : if (!strcmp("normal", name)) return 4;
33753 0 : if (!strcmp("splatU", name)) return 5;
33754 0 : if (!strcmp("splatV", name)) return 6;
33755 0 : if (!strcmp("width", name)) return 7;
33756 0 : return -1;
33757 0 : }
33758 : static Bool PointTextureV2_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
33759 : {
33760 0 : switch (FieldIndex) {
33761 : case 2:
33762 0 : *AType = 0;
33763 0 : *QType = 13;
33764 0 : *QT13_bits = 5;
33765 0 : *b_min = FLT2FIX(0);
33766 0 : *b_max = FLT2FIX(31);
33767 0 : return 1;
33768 : case 5:
33769 0 : *AType = 0;
33770 0 : *QType = 1;
33771 0 : *b_min = FIX_MIN;
33772 0 : *b_max = FIX_MAX;
33773 0 : return 1;
33774 : case 6:
33775 0 : *AType = 0;
33776 0 : *QType = 1;
33777 0 : *b_min = FIX_MIN;
33778 0 : *b_max = FIX_MAX;
33779 0 : return 1;
33780 : default:
33781 0 : return 0;
33782 : }
33783 0 : }
33784 :
33785 :
33786 :
33787 : GF_Node *PointTextureV2_Create()
33788 : {
33789 : M_PointTextureV2 *p;
33790 0 : GF_SAFEALLOC(p, M_PointTextureV2);
33791 0 : if(!p) return NULL;
33792 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PointTextureV2);
33793 :
33794 : /*default field values*/
33795 0 : p->depthNbBits = 7;
33796 0 : p->height = 256;
33797 0 : p->width = 256;
33798 0 : return (GF_Node *)p;
33799 0 : }
33800 :
33801 :
33802 : /*
33803 : SBVCAnimationV2 Node deletion
33804 : */
33805 :
33806 : static void SBVCAnimationV2_Del(GF_Node *node)
33807 : {
33808 0 : M_SBVCAnimationV2 *p = (M_SBVCAnimationV2 *) node;
33809 0 : gf_sg_mfint32_del(p->activeUrlIndex);
33810 0 : gf_sg_mfurl_del(p->url);
33811 0 : gf_node_unregister_children((GF_Node *) p, p->virtualCharacters);
33812 0 : gf_node_free((GF_Node *) p);
33813 0 : }
33814 :
33815 : static const u16 SBVCAnimationV2_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
33816 : static const u16 SBVCAnimationV2_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
33817 : static const u16 SBVCAnimationV2_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
33818 : static const u16 SBVCAnimationV2_Dyn2All[] = { 2, 5};
33819 :
33820 : static u32 SBVCAnimationV2_get_field_count(GF_Node *node, u8 IndexMode)
33821 : {
33822 0 : switch(IndexMode) {
33823 : case GF_SG_FIELD_CODING_IN:
33824 0 : return 8;
33825 : case GF_SG_FIELD_CODING_DEF:
33826 0 : return 8;
33827 : case GF_SG_FIELD_CODING_OUT:
33828 0 : return 10;
33829 : case GF_SG_FIELD_CODING_DYN:
33830 0 : return 2;
33831 : default:
33832 0 : return 10;
33833 : }
33834 0 : }
33835 :
33836 : static GF_Err SBVCAnimationV2_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
33837 : {
33838 0 : switch(IndexMode) {
33839 : case GF_SG_FIELD_CODING_IN:
33840 0 : *allField = SBVCAnimationV2_In2All[inField];
33841 0 : return GF_OK;
33842 : case GF_SG_FIELD_CODING_DEF:
33843 0 : *allField = SBVCAnimationV2_Def2All[inField];
33844 0 : return GF_OK;
33845 : case GF_SG_FIELD_CODING_OUT:
33846 0 : *allField = SBVCAnimationV2_Out2All[inField];
33847 0 : return GF_OK;
33848 : case GF_SG_FIELD_CODING_DYN:
33849 0 : *allField = SBVCAnimationV2_Dyn2All[inField];
33850 0 : return GF_OK;
33851 : default:
33852 0 : return GF_BAD_PARAM;
33853 : }
33854 0 : }
33855 : static GF_Err SBVCAnimationV2_get_field(GF_Node *node, GF_FieldInfo *info)
33856 : {
33857 0 : switch (info->fieldIndex) {
33858 : case 0:
33859 0 : info->name = "activeUrlIndex";
33860 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33861 0 : info->fieldType = GF_SG_VRML_MFINT32;
33862 0 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->activeUrlIndex;
33863 0 : return GF_OK;
33864 : case 1:
33865 0 : info->name = "loop";
33866 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33867 0 : info->fieldType = GF_SG_VRML_SFBOOL;
33868 0 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->loop;
33869 0 : return GF_OK;
33870 : case 2:
33871 0 : info->name = "speed";
33872 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33873 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
33874 0 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->speed;
33875 0 : return GF_OK;
33876 : case 3:
33877 0 : info->name = "startTime";
33878 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33879 0 : info->fieldType = GF_SG_VRML_SFTIME;
33880 0 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->startTime;
33881 0 : return GF_OK;
33882 : case 4:
33883 0 : info->name = "stopTime";
33884 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33885 0 : info->fieldType = GF_SG_VRML_SFTIME;
33886 0 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->stopTime;
33887 0 : return GF_OK;
33888 : case 5:
33889 0 : info->name = "transitionTime";
33890 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33891 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
33892 0 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->transitionTime;
33893 0 : return GF_OK;
33894 : case 6:
33895 0 : info->name = "url";
33896 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33897 0 : info->fieldType = GF_SG_VRML_MFURL;
33898 0 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->url;
33899 0 : return GF_OK;
33900 : case 7:
33901 0 : info->name = "virtualCharacters";
33902 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33903 0 : info->fieldType = GF_SG_VRML_MFNODE;
33904 0 : info->NDTtype = NDT_SF3DNode;
33905 0 : info->far_ptr = & ((M_SBVCAnimationV2 *)node)->virtualCharacters;
33906 0 : return GF_OK;
33907 : case 8:
33908 0 : info->name = "duration_changed";
33909 0 : info->eventType = GF_SG_EVENT_OUT;
33910 0 : info->fieldType = GF_SG_VRML_SFTIME;
33911 0 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->duration_changed;
33912 0 : return GF_OK;
33913 : case 9:
33914 0 : info->name = "isActive";
33915 0 : info->eventType = GF_SG_EVENT_OUT;
33916 0 : info->fieldType = GF_SG_VRML_SFBOOL;
33917 0 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->isActive;
33918 0 : return GF_OK;
33919 : default:
33920 0 : return GF_BAD_PARAM;
33921 : }
33922 0 : }
33923 :
33924 :
33925 : static s32 SBVCAnimationV2_get_field_index_by_name(char *name)
33926 : {
33927 0 : if (!strcmp("activeUrlIndex", name)) return 0;
33928 0 : if (!strcmp("loop", name)) return 1;
33929 0 : if (!strcmp("speed", name)) return 2;
33930 0 : if (!strcmp("startTime", name)) return 3;
33931 0 : if (!strcmp("stopTime", name)) return 4;
33932 0 : if (!strcmp("transitionTime", name)) return 5;
33933 0 : if (!strcmp("url", name)) return 6;
33934 0 : if (!strcmp("virtualCharacters", name)) return 7;
33935 0 : if (!strcmp("duration_changed", name)) return 8;
33936 0 : if (!strcmp("isActive", name)) return 9;
33937 0 : return -1;
33938 0 : }
33939 : static Bool SBVCAnimationV2_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
33940 : {
33941 0 : switch (FieldIndex) {
33942 : case 2:
33943 0 : *AType = 7;
33944 0 : *QType = 0;
33945 0 : *b_min = FIX_MIN;
33946 0 : *b_max = FIX_MAX;
33947 0 : return 1;
33948 : case 5:
33949 0 : *AType = 7;
33950 0 : *QType = 0;
33951 0 : *b_min = FLT2FIX(0);
33952 0 : *b_max = FIX_MAX;
33953 0 : return 1;
33954 : default:
33955 0 : return 0;
33956 : }
33957 0 : }
33958 :
33959 :
33960 :
33961 : GF_Node *SBVCAnimationV2_Create()
33962 : {
33963 : M_SBVCAnimationV2 *p;
33964 0 : GF_SAFEALLOC(p, M_SBVCAnimationV2);
33965 0 : if(!p) return NULL;
33966 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SBVCAnimationV2);
33967 :
33968 : /*default field values*/
33969 0 : p->speed = FLT2FIX(1.0);
33970 0 : p->startTime = 0;
33971 0 : p->stopTime = 0;
33972 0 : p->transitionTime = FLT2FIX(0);
33973 0 : return (GF_Node *)p;
33974 0 : }
33975 :
33976 :
33977 : /*
33978 : SimpleTextureV2 Node deletion
33979 : */
33980 :
33981 : static void SimpleTextureV2_Del(GF_Node *node)
33982 : {
33983 0 : M_SimpleTextureV2 *p = (M_SimpleTextureV2 *) node;
33984 0 : gf_node_unregister((GF_Node *) p->depth, (GF_Node *) p);
33985 0 : gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
33986 0 : gf_node_unregister((GF_Node *) p->splatU, (GF_Node *) p);
33987 0 : gf_node_unregister((GF_Node *) p->splatV, (GF_Node *) p);
33988 0 : gf_node_unregister((GF_Node *) p->texture, (GF_Node *) p);
33989 0 : gf_node_free((GF_Node *) p);
33990 0 : }
33991 :
33992 : static const u16 SimpleTextureV2_Def2All[] = { 0, 1, 2, 3, 4};
33993 :
33994 : static u32 SimpleTextureV2_get_field_count(GF_Node *node, u8 IndexMode)
33995 : {
33996 0 : switch(IndexMode) {
33997 : case GF_SG_FIELD_CODING_IN:
33998 0 : return 0;
33999 : case GF_SG_FIELD_CODING_DEF:
34000 0 : return 5;
34001 : case GF_SG_FIELD_CODING_OUT:
34002 0 : return 0;
34003 : case GF_SG_FIELD_CODING_DYN:
34004 0 : return 0;
34005 : default:
34006 0 : return 5;
34007 : }
34008 0 : }
34009 :
34010 : static GF_Err SimpleTextureV2_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
34011 : {
34012 0 : switch(IndexMode) {
34013 : case GF_SG_FIELD_CODING_DEF:
34014 0 : *allField = SimpleTextureV2_Def2All[inField];
34015 0 : return GF_OK;
34016 : default:
34017 0 : return GF_BAD_PARAM;
34018 : }
34019 0 : }
34020 : static GF_Err SimpleTextureV2_get_field(GF_Node *node, GF_FieldInfo *info)
34021 : {
34022 0 : switch (info->fieldIndex) {
34023 : case 0:
34024 0 : info->name = "depth";
34025 0 : info->eventType = GF_SG_EVENT_FIELD;
34026 0 : info->fieldType = GF_SG_VRML_SFNODE;
34027 0 : info->NDTtype = NDT_SFTextureNode;
34028 0 : info->far_ptr = & ((M_SimpleTextureV2 *)node)->depth;
34029 0 : return GF_OK;
34030 : case 1:
34031 0 : info->name = "normal";
34032 0 : info->eventType = GF_SG_EVENT_FIELD;
34033 0 : info->fieldType = GF_SG_VRML_SFNODE;
34034 0 : info->NDTtype = NDT_SFTextureNode;
34035 0 : info->far_ptr = & ((M_SimpleTextureV2 *)node)->normal;
34036 0 : return GF_OK;
34037 : case 2:
34038 0 : info->name = "splatU";
34039 0 : info->eventType = GF_SG_EVENT_FIELD;
34040 0 : info->fieldType = GF_SG_VRML_SFNODE;
34041 0 : info->NDTtype = NDT_SFTextureNode;
34042 0 : info->far_ptr = & ((M_SimpleTextureV2 *)node)->splatU;
34043 0 : return GF_OK;
34044 : case 3:
34045 0 : info->name = "splatV";
34046 0 : info->eventType = GF_SG_EVENT_FIELD;
34047 0 : info->fieldType = GF_SG_VRML_SFNODE;
34048 0 : info->NDTtype = NDT_SFTextureNode;
34049 0 : info->far_ptr = & ((M_SimpleTextureV2 *)node)->splatV;
34050 0 : return GF_OK;
34051 : case 4:
34052 0 : info->name = "texture";
34053 0 : info->eventType = GF_SG_EVENT_FIELD;
34054 0 : info->fieldType = GF_SG_VRML_SFNODE;
34055 0 : info->NDTtype = NDT_SFTextureNode;
34056 0 : info->far_ptr = & ((M_SimpleTextureV2 *)node)->texture;
34057 0 : return GF_OK;
34058 : default:
34059 0 : return GF_BAD_PARAM;
34060 : }
34061 0 : }
34062 :
34063 :
34064 : static s32 SimpleTextureV2_get_field_index_by_name(char *name)
34065 : {
34066 0 : if (!strcmp("depth", name)) return 0;
34067 0 : if (!strcmp("normal", name)) return 1;
34068 0 : if (!strcmp("splatU", name)) return 2;
34069 0 : if (!strcmp("splatV", name)) return 3;
34070 0 : if (!strcmp("texture", name)) return 4;
34071 0 : return -1;
34072 0 : }
34073 : static Bool SimpleTextureV2_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
34074 : {
34075 : switch (FieldIndex) {
34076 : default:
34077 0 : return 0;
34078 : }
34079 : }
34080 :
34081 :
34082 :
34083 : GF_Node *SimpleTextureV2_Create()
34084 : {
34085 : M_SimpleTextureV2 *p;
34086 0 : GF_SAFEALLOC(p, M_SimpleTextureV2);
34087 0 : if(!p) return NULL;
34088 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SimpleTextureV2);
34089 :
34090 : /*default field values*/
34091 0 : return (GF_Node *)p;
34092 0 : }
34093 :
34094 :
34095 : /*
34096 : SurroundingSound Node deletion
34097 : */
34098 :
34099 : static void SurroundingSound_Del(GF_Node *node)
34100 : {
34101 0 : M_SurroundingSound *p = (M_SurroundingSound *) node;
34102 0 : gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
34103 0 : gf_node_free((GF_Node *) p);
34104 0 : }
34105 :
34106 : static const u16 SurroundingSound_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
34107 : static const u16 SurroundingSound_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
34108 : static const u16 SurroundingSound_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
34109 : static const u16 SurroundingSound_Dyn2All[] = { 1, 3, 5};
34110 :
34111 : static u32 SurroundingSound_get_field_count(GF_Node *node, u8 IndexMode)
34112 : {
34113 0 : switch(IndexMode) {
34114 : case GF_SG_FIELD_CODING_IN:
34115 0 : return 7;
34116 : case GF_SG_FIELD_CODING_DEF:
34117 0 : return 7;
34118 : case GF_SG_FIELD_CODING_OUT:
34119 0 : return 7;
34120 : case GF_SG_FIELD_CODING_DYN:
34121 0 : return 3;
34122 : default:
34123 0 : return 7;
34124 : }
34125 0 : }
34126 :
34127 : static GF_Err SurroundingSound_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
34128 : {
34129 0 : switch(IndexMode) {
34130 : case GF_SG_FIELD_CODING_IN:
34131 0 : *allField = SurroundingSound_In2All[inField];
34132 0 : return GF_OK;
34133 : case GF_SG_FIELD_CODING_DEF:
34134 0 : *allField = SurroundingSound_Def2All[inField];
34135 0 : return GF_OK;
34136 : case GF_SG_FIELD_CODING_OUT:
34137 0 : *allField = SurroundingSound_Out2All[inField];
34138 0 : return GF_OK;
34139 : case GF_SG_FIELD_CODING_DYN:
34140 0 : *allField = SurroundingSound_Dyn2All[inField];
34141 0 : return GF_OK;
34142 : default:
34143 0 : return GF_BAD_PARAM;
34144 : }
34145 0 : }
34146 : static GF_Err SurroundingSound_get_field(GF_Node *node, GF_FieldInfo *info)
34147 : {
34148 0 : switch (info->fieldIndex) {
34149 : case 0:
34150 0 : info->name = "source";
34151 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34152 0 : info->fieldType = GF_SG_VRML_SFNODE;
34153 0 : info->NDTtype = NDT_SFAudioNode;
34154 0 : info->far_ptr = & ((M_SurroundingSound *)node)->source;
34155 0 : return GF_OK;
34156 : case 1:
34157 0 : info->name = "intensity";
34158 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34159 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
34160 0 : info->far_ptr = & ((M_SurroundingSound *) node)->intensity;
34161 0 : return GF_OK;
34162 : case 2:
34163 0 : info->name = "distance";
34164 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34165 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
34166 0 : info->far_ptr = & ((M_SurroundingSound *) node)->distance;
34167 0 : return GF_OK;
34168 : case 3:
34169 0 : info->name = "location";
34170 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34171 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
34172 0 : info->far_ptr = & ((M_SurroundingSound *) node)->location;
34173 0 : return GF_OK;
34174 : case 4:
34175 0 : info->name = "distortionFactor";
34176 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34177 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
34178 0 : info->far_ptr = & ((M_SurroundingSound *) node)->distortionFactor;
34179 0 : return GF_OK;
34180 : case 5:
34181 0 : info->name = "orientation";
34182 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34183 0 : info->fieldType = GF_SG_VRML_SFROTATION;
34184 0 : info->far_ptr = & ((M_SurroundingSound *) node)->orientation;
34185 0 : return GF_OK;
34186 : case 6:
34187 0 : info->name = "isTransformable";
34188 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34189 0 : info->fieldType = GF_SG_VRML_SFBOOL;
34190 0 : info->far_ptr = & ((M_SurroundingSound *) node)->isTransformable;
34191 0 : return GF_OK;
34192 : default:
34193 0 : return GF_BAD_PARAM;
34194 : }
34195 0 : }
34196 :
34197 :
34198 : static s32 SurroundingSound_get_field_index_by_name(char *name)
34199 : {
34200 0 : if (!strcmp("source", name)) return 0;
34201 0 : if (!strcmp("intensity", name)) return 1;
34202 0 : if (!strcmp("distance", name)) return 2;
34203 0 : if (!strcmp("location", name)) return 3;
34204 0 : if (!strcmp("distortionFactor", name)) return 4;
34205 0 : if (!strcmp("orientation", name)) return 5;
34206 0 : if (!strcmp("isTransformable", name)) return 6;
34207 0 : return -1;
34208 0 : }
34209 : static Bool SurroundingSound_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
34210 : {
34211 0 : switch (FieldIndex) {
34212 : case 1:
34213 0 : *AType = 7;
34214 0 : *QType = 0;
34215 0 : *b_min = FLT2FIX(0);
34216 0 : *b_max = FLT2FIX(1);
34217 0 : return 1;
34218 : case 2:
34219 0 : *AType = 0;
34220 0 : *QType = 0;
34221 0 : *b_min = FLT2FIX(0);
34222 0 : *b_max = FIX_MAX;
34223 0 : return 1;
34224 : case 3:
34225 0 : *AType = 1;
34226 0 : *QType = 1;
34227 0 : *b_min = FIX_MIN;
34228 0 : *b_max = FIX_MAX;
34229 0 : return 1;
34230 : case 5:
34231 0 : *AType = 10;
34232 0 : *QType = 10;
34233 0 : *b_min = FIX_MIN;
34234 0 : *b_max = FIX_MAX;
34235 0 : return 1;
34236 : default:
34237 0 : return 0;
34238 : }
34239 0 : }
34240 :
34241 :
34242 :
34243 : GF_Node *SurroundingSound_Create()
34244 : {
34245 : M_SurroundingSound *p;
34246 0 : GF_SAFEALLOC(p, M_SurroundingSound);
34247 0 : if(!p) return NULL;
34248 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SurroundingSound);
34249 :
34250 : /*default field values*/
34251 0 : p->intensity = FLT2FIX(1.0);
34252 0 : p->distance = FLT2FIX(0.0);
34253 0 : p->location.x = FLT2FIX(0.0);
34254 0 : p->location.y = FLT2FIX(0.0);
34255 0 : p->location.z = FLT2FIX(0.0);
34256 0 : p->distortionFactor = FLT2FIX(0.0);
34257 0 : p->orientation.x = FLT2FIX(0.0);
34258 0 : p->orientation.y = FLT2FIX(0.0);
34259 0 : p->orientation.z = FLT2FIX(1.0);
34260 0 : p->orientation.q = FLT2FIX(0.0);
34261 0 : p->isTransformable = 1;
34262 0 : return (GF_Node *)p;
34263 0 : }
34264 :
34265 :
34266 : /*
34267 : Transform3DAudio Node deletion
34268 : */
34269 :
34270 : static void Transform3DAudio_Del(GF_Node *node)
34271 : {
34272 0 : M_Transform3DAudio *p = (M_Transform3DAudio *) node;
34273 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
34274 0 : gf_node_free((GF_Node *) p);
34275 0 : }
34276 :
34277 : static const u16 Transform3DAudio_Def2All[] = { 2, 3, 4, 5, 6, 7, 8};
34278 : static const u16 Transform3DAudio_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
34279 : static const u16 Transform3DAudio_Out2All[] = { 2, 3, 4, 5, 6, 7, 8};
34280 : static const u16 Transform3DAudio_Dyn2All[] = { 3, 4, 5, 6, 7};
34281 :
34282 : static u32 Transform3DAudio_get_field_count(GF_Node *node, u8 IndexMode)
34283 : {
34284 0 : switch(IndexMode) {
34285 : case GF_SG_FIELD_CODING_IN:
34286 0 : return 9;
34287 : case GF_SG_FIELD_CODING_DEF:
34288 0 : return 7;
34289 : case GF_SG_FIELD_CODING_OUT:
34290 0 : return 7;
34291 : case GF_SG_FIELD_CODING_DYN:
34292 0 : return 5;
34293 : default:
34294 0 : return 9;
34295 : }
34296 0 : }
34297 :
34298 : static GF_Err Transform3DAudio_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
34299 : {
34300 0 : switch(IndexMode) {
34301 : case GF_SG_FIELD_CODING_IN:
34302 0 : *allField = Transform3DAudio_In2All[inField];
34303 0 : return GF_OK;
34304 : case GF_SG_FIELD_CODING_DEF:
34305 0 : *allField = Transform3DAudio_Def2All[inField];
34306 0 : return GF_OK;
34307 : case GF_SG_FIELD_CODING_OUT:
34308 0 : *allField = Transform3DAudio_Out2All[inField];
34309 0 : return GF_OK;
34310 : case GF_SG_FIELD_CODING_DYN:
34311 0 : *allField = Transform3DAudio_Dyn2All[inField];
34312 0 : return GF_OK;
34313 : default:
34314 0 : return GF_BAD_PARAM;
34315 : }
34316 0 : }
34317 : static GF_Err Transform3DAudio_get_field(GF_Node *node, GF_FieldInfo *info)
34318 : {
34319 0 : switch (info->fieldIndex) {
34320 : case 0:
34321 0 : info->name = "addChildren";
34322 0 : info->eventType = GF_SG_EVENT_IN;
34323 0 : info->on_event_in = ((M_Transform3DAudio *)node)->on_addChildren;
34324 0 : info->fieldType = GF_SG_VRML_MFNODE;
34325 0 : info->NDTtype = NDT_SF3DNode;
34326 0 : info->far_ptr = & ((M_Transform3DAudio *)node)->addChildren;
34327 0 : return GF_OK;
34328 : case 1:
34329 0 : info->name = "removeChildren";
34330 0 : info->eventType = GF_SG_EVENT_IN;
34331 0 : info->on_event_in = ((M_Transform3DAudio *)node)->on_removeChildren;
34332 0 : info->fieldType = GF_SG_VRML_MFNODE;
34333 0 : info->NDTtype = NDT_SF3DNode;
34334 0 : info->far_ptr = & ((M_Transform3DAudio *)node)->removeChildren;
34335 0 : return GF_OK;
34336 : case 2:
34337 0 : info->name = "children";
34338 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34339 0 : info->fieldType = GF_SG_VRML_MFNODE;
34340 0 : info->NDTtype = NDT_SF3DNode;
34341 0 : info->far_ptr = & ((M_Transform3DAudio *)node)->children;
34342 0 : return GF_OK;
34343 : case 3:
34344 0 : info->name = "thirdCenterCoordinate";
34345 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34346 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
34347 0 : info->far_ptr = & ((M_Transform3DAudio *) node)->thirdCenterCoordinate;
34348 0 : return GF_OK;
34349 : case 4:
34350 0 : info->name = "rotationVector";
34351 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34352 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
34353 0 : info->far_ptr = & ((M_Transform3DAudio *) node)->rotationVector;
34354 0 : return GF_OK;
34355 : case 5:
34356 0 : info->name = "thirdScaleCoordinate";
34357 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34358 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
34359 0 : info->far_ptr = & ((M_Transform3DAudio *) node)->thirdScaleCoordinate;
34360 0 : return GF_OK;
34361 : case 6:
34362 0 : info->name = "scaleOrientationVector";
34363 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34364 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
34365 0 : info->far_ptr = & ((M_Transform3DAudio *) node)->scaleOrientationVector;
34366 0 : return GF_OK;
34367 : case 7:
34368 0 : info->name = "thirdTranslationCoordinate";
34369 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34370 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
34371 0 : info->far_ptr = & ((M_Transform3DAudio *) node)->thirdTranslationCoordinate;
34372 0 : return GF_OK;
34373 : case 8:
34374 0 : info->name = "coordinateTransform";
34375 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34376 0 : info->fieldType = GF_SG_VRML_SFROTATION;
34377 0 : info->far_ptr = & ((M_Transform3DAudio *) node)->coordinateTransform;
34378 0 : return GF_OK;
34379 : default:
34380 0 : return GF_BAD_PARAM;
34381 : }
34382 0 : }
34383 :
34384 :
34385 : static s32 Transform3DAudio_get_field_index_by_name(char *name)
34386 : {
34387 0 : if (!strcmp("addChildren", name)) return 0;
34388 0 : if (!strcmp("removeChildren", name)) return 1;
34389 0 : if (!strcmp("children", name)) return 2;
34390 0 : if (!strcmp("thirdCenterCoordinate", name)) return 3;
34391 0 : if (!strcmp("rotationVector", name)) return 4;
34392 0 : if (!strcmp("thirdScaleCoordinate", name)) return 5;
34393 0 : if (!strcmp("scaleOrientationVector", name)) return 6;
34394 0 : if (!strcmp("thirdTranslationCoordinate", name)) return 7;
34395 0 : if (!strcmp("coordinateTransform", name)) return 8;
34396 0 : return -1;
34397 0 : }
34398 : static Bool Transform3DAudio_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
34399 : {
34400 0 : switch (FieldIndex) {
34401 : case 3:
34402 0 : *AType = 7;
34403 0 : *QType = 0;
34404 0 : *b_min = FIX_MIN;
34405 0 : *b_max = FIX_MAX;
34406 0 : return 1;
34407 : case 4:
34408 0 : *AType = 11;
34409 0 : *QType = 7;
34410 0 : *b_min = FLT2FIX(-3.14159265);
34411 0 : *b_max = FLT2FIX(3.14159265);
34412 0 : return 1;
34413 : case 5:
34414 0 : *AType = 7;
34415 0 : *QType = 0;
34416 0 : *b_min = FLT2FIX(0);
34417 0 : *b_max = FIX_MAX;
34418 0 : return 1;
34419 : case 6:
34420 0 : *AType = 11;
34421 0 : *QType = 7;
34422 0 : *b_min = FLT2FIX(-1);
34423 0 : *b_max = FLT2FIX(1);
34424 0 : return 1;
34425 : case 7:
34426 0 : *AType = 7;
34427 0 : *QType = 0;
34428 0 : *b_min = FIX_MIN;
34429 0 : *b_max = FIX_MAX;
34430 0 : return 1;
34431 : case 8:
34432 0 : *AType = 0;
34433 0 : *QType = 10;
34434 0 : *b_min = FLT2FIX(-3.14159265);
34435 0 : *b_max = FLT2FIX(3.14159265);
34436 0 : return 1;
34437 : default:
34438 0 : return 0;
34439 : }
34440 0 : }
34441 :
34442 :
34443 :
34444 : GF_Node *Transform3DAudio_Create()
34445 : {
34446 : M_Transform3DAudio *p;
34447 0 : GF_SAFEALLOC(p, M_Transform3DAudio);
34448 0 : if(!p) return NULL;
34449 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Transform3DAudio);
34450 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
34451 :
34452 : /*default field values*/
34453 0 : p->thirdCenterCoordinate = FLT2FIX(0.0);
34454 0 : p->rotationVector.x = FLT2FIX(0.0);
34455 0 : p->rotationVector.y = FLT2FIX(0.0);
34456 0 : p->rotationVector.z = FLT2FIX(1.0);
34457 0 : p->thirdScaleCoordinate = FLT2FIX(0.0);
34458 0 : p->scaleOrientationVector.x = FLT2FIX(0.0);
34459 0 : p->scaleOrientationVector.y = FLT2FIX(0.0);
34460 0 : p->scaleOrientationVector.z = FLT2FIX(1.0);
34461 0 : p->thirdTranslationCoordinate = FLT2FIX(0.0);
34462 0 : p->coordinateTransform.x = FLT2FIX(1.0);
34463 0 : p->coordinateTransform.y = FLT2FIX(0.0);
34464 0 : p->coordinateTransform.z = FLT2FIX(0.0);
34465 0 : p->coordinateTransform.q = FLT2FIX(-1.5707963);
34466 0 : return (GF_Node *)p;
34467 0 : }
34468 :
34469 :
34470 : /*
34471 : WideSound Node deletion
34472 : */
34473 :
34474 : static void WideSound_Del(GF_Node *node)
34475 : {
34476 0 : M_WideSound *p = (M_WideSound *) node;
34477 0 : gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
34478 0 : gf_node_unregister((GF_Node *) p->perceptualParameters, (GF_Node *) p);
34479 0 : gf_sg_mffloat_del(p->size);
34480 0 : gf_node_free((GF_Node *) p);
34481 0 : }
34482 :
34483 : static const u16 WideSound_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
34484 : static const u16 WideSound_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
34485 : static const u16 WideSound_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
34486 : static const u16 WideSound_Dyn2All[] = { 1, 2, 8};
34487 :
34488 : static u32 WideSound_get_field_count(GF_Node *node, u8 IndexMode)
34489 : {
34490 0 : switch(IndexMode) {
34491 : case GF_SG_FIELD_CODING_IN:
34492 0 : return 12;
34493 : case GF_SG_FIELD_CODING_DEF:
34494 0 : return 15;
34495 : case GF_SG_FIELD_CODING_OUT:
34496 0 : return 12;
34497 : case GF_SG_FIELD_CODING_DYN:
34498 0 : return 3;
34499 : default:
34500 0 : return 15;
34501 : }
34502 0 : }
34503 :
34504 : static GF_Err WideSound_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
34505 : {
34506 0 : switch(IndexMode) {
34507 : case GF_SG_FIELD_CODING_IN:
34508 0 : *allField = WideSound_In2All[inField];
34509 0 : return GF_OK;
34510 : case GF_SG_FIELD_CODING_DEF:
34511 0 : *allField = WideSound_Def2All[inField];
34512 0 : return GF_OK;
34513 : case GF_SG_FIELD_CODING_OUT:
34514 0 : *allField = WideSound_Out2All[inField];
34515 0 : return GF_OK;
34516 : case GF_SG_FIELD_CODING_DYN:
34517 0 : *allField = WideSound_Dyn2All[inField];
34518 0 : return GF_OK;
34519 : default:
34520 0 : return GF_BAD_PARAM;
34521 : }
34522 0 : }
34523 : static GF_Err WideSound_get_field(GF_Node *node, GF_FieldInfo *info)
34524 : {
34525 0 : switch (info->fieldIndex) {
34526 : case 0:
34527 0 : info->name = "source";
34528 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34529 0 : info->fieldType = GF_SG_VRML_SFNODE;
34530 0 : info->NDTtype = NDT_SFAudioNode;
34531 0 : info->far_ptr = & ((M_WideSound *)node)->source;
34532 0 : return GF_OK;
34533 : case 1:
34534 0 : info->name = "intensity";
34535 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34536 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
34537 0 : info->far_ptr = & ((M_WideSound *) node)->intensity;
34538 0 : return GF_OK;
34539 : case 2:
34540 0 : info->name = "location";
34541 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34542 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
34543 0 : info->far_ptr = & ((M_WideSound *) node)->location;
34544 0 : return GF_OK;
34545 : case 3:
34546 0 : info->name = "spatialize";
34547 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34548 0 : info->fieldType = GF_SG_VRML_SFBOOL;
34549 0 : info->far_ptr = & ((M_WideSound *) node)->spatialize;
34550 0 : return GF_OK;
34551 : case 4:
34552 0 : info->name = "perceptualParameters";
34553 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34554 0 : info->fieldType = GF_SG_VRML_SFNODE;
34555 0 : info->NDTtype = NDT_SFPerceptualParameterNode;
34556 0 : info->far_ptr = & ((M_WideSound *)node)->perceptualParameters;
34557 0 : return GF_OK;
34558 : case 5:
34559 0 : info->name = "roomEffect";
34560 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34561 0 : info->fieldType = GF_SG_VRML_SFBOOL;
34562 0 : info->far_ptr = & ((M_WideSound *) node)->roomEffect;
34563 0 : return GF_OK;
34564 : case 6:
34565 0 : info->name = "shape";
34566 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34567 0 : info->fieldType = GF_SG_VRML_SFINT32;
34568 0 : info->far_ptr = & ((M_WideSound *) node)->shape;
34569 0 : return GF_OK;
34570 : case 7:
34571 0 : info->name = "size";
34572 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34573 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
34574 0 : info->far_ptr = & ((M_WideSound *) node)->size;
34575 0 : return GF_OK;
34576 : case 8:
34577 0 : info->name = "direction";
34578 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34579 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
34580 0 : info->far_ptr = & ((M_WideSound *) node)->direction;
34581 0 : return GF_OK;
34582 : case 9:
34583 0 : info->name = "density";
34584 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34585 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
34586 0 : info->far_ptr = & ((M_WideSound *) node)->density;
34587 0 : return GF_OK;
34588 : case 10:
34589 0 : info->name = "diffuseSelect";
34590 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34591 0 : info->fieldType = GF_SG_VRML_SFINT32;
34592 0 : info->far_ptr = & ((M_WideSound *) node)->diffuseSelect;
34593 0 : return GF_OK;
34594 : case 11:
34595 0 : info->name = "decorrStrength";
34596 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34597 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
34598 0 : info->far_ptr = & ((M_WideSound *) node)->decorrStrength;
34599 0 : return GF_OK;
34600 : case 12:
34601 0 : info->name = "speedOfSound";
34602 0 : info->eventType = GF_SG_EVENT_FIELD;
34603 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
34604 0 : info->far_ptr = & ((M_WideSound *) node)->speedOfSound;
34605 0 : return GF_OK;
34606 : case 13:
34607 0 : info->name = "distance";
34608 0 : info->eventType = GF_SG_EVENT_FIELD;
34609 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
34610 0 : info->far_ptr = & ((M_WideSound *) node)->distance;
34611 0 : return GF_OK;
34612 : case 14:
34613 0 : info->name = "useAirabs";
34614 0 : info->eventType = GF_SG_EVENT_FIELD;
34615 0 : info->fieldType = GF_SG_VRML_SFBOOL;
34616 0 : info->far_ptr = & ((M_WideSound *) node)->useAirabs;
34617 0 : return GF_OK;
34618 : default:
34619 0 : return GF_BAD_PARAM;
34620 : }
34621 0 : }
34622 :
34623 :
34624 : static s32 WideSound_get_field_index_by_name(char *name)
34625 : {
34626 0 : if (!strcmp("source", name)) return 0;
34627 0 : if (!strcmp("intensity", name)) return 1;
34628 0 : if (!strcmp("location", name)) return 2;
34629 0 : if (!strcmp("spatialize", name)) return 3;
34630 0 : if (!strcmp("perceptualParameters", name)) return 4;
34631 0 : if (!strcmp("roomEffect", name)) return 5;
34632 0 : if (!strcmp("shape", name)) return 6;
34633 0 : if (!strcmp("size", name)) return 7;
34634 0 : if (!strcmp("direction", name)) return 8;
34635 0 : if (!strcmp("density", name)) return 9;
34636 0 : if (!strcmp("diffuseSelect", name)) return 10;
34637 0 : if (!strcmp("decorrStrength", name)) return 11;
34638 0 : if (!strcmp("speedOfSound", name)) return 12;
34639 0 : if (!strcmp("distance", name)) return 13;
34640 0 : if (!strcmp("useAirabs", name)) return 14;
34641 0 : return -1;
34642 0 : }
34643 : static Bool WideSound_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
34644 : {
34645 0 : switch (FieldIndex) {
34646 : case 1:
34647 0 : *AType = 7;
34648 0 : *QType = 0;
34649 0 : *b_min = FLT2FIX(0);
34650 0 : *b_max = FLT2FIX(1);
34651 0 : return 1;
34652 : case 2:
34653 0 : *AType = 1;
34654 0 : *QType = 1;
34655 0 : *b_min = FIX_MIN;
34656 0 : *b_max = FIX_MAX;
34657 0 : return 1;
34658 : case 6:
34659 0 : *AType = 0;
34660 0 : *QType = 13;
34661 0 : *QT13_bits = 4;
34662 0 : *b_min = FLT2FIX(0);
34663 0 : *b_max = FLT2FIX(4);
34664 0 : return 1;
34665 : case 8:
34666 0 : *AType = 9;
34667 0 : *QType = 9;
34668 0 : *b_min = FIX_MIN;
34669 0 : *b_max = FIX_MAX;
34670 0 : return 1;
34671 : case 10:
34672 0 : *AType = 0;
34673 0 : *QType = 0;
34674 0 : *b_min = FLT2FIX(0);
34675 0 : *b_max = FIX_MAX;
34676 0 : return 1;
34677 : case 12:
34678 0 : *AType = 0;
34679 0 : *QType = 1;
34680 0 : *b_min = FLT2FIX(0);
34681 0 : *b_max = FIX_MAX;
34682 0 : return 1;
34683 : case 13:
34684 0 : *AType = 0;
34685 0 : *QType = 0;
34686 0 : *b_min = FLT2FIX(0);
34687 0 : *b_max = FIX_MAX;
34688 0 : return 1;
34689 : default:
34690 0 : return 0;
34691 : }
34692 0 : }
34693 :
34694 :
34695 :
34696 : GF_Node *WideSound_Create()
34697 : {
34698 : M_WideSound *p;
34699 0 : GF_SAFEALLOC(p, M_WideSound);
34700 0 : if(!p) return NULL;
34701 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_WideSound);
34702 :
34703 : /*default field values*/
34704 0 : p->intensity = FLT2FIX(1);
34705 0 : p->location.x = FLT2FIX(0.0);
34706 0 : p->location.y = FLT2FIX(0.0);
34707 0 : p->location.z = FLT2FIX(0.0);
34708 0 : p->spatialize = 1;
34709 0 : p->shape = 0;
34710 0 : p->size.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
34711 0 : p->size.count = 1;
34712 0 : p->size.vals[0] = FLT2FIX(0.0);
34713 0 : p->direction.x = FLT2FIX(0.0);
34714 0 : p->direction.y = FLT2FIX(1.0);
34715 0 : p->direction.z = FLT2FIX(0.0);
34716 0 : p->density = FLT2FIX(0.5);
34717 0 : p->diffuseSelect = 1;
34718 0 : p->decorrStrength = FLT2FIX(1.0);
34719 0 : p->speedOfSound = FLT2FIX(340.0);
34720 0 : p->distance = FLT2FIX(1000.0);
34721 0 : return (GF_Node *)p;
34722 0 : }
34723 :
34724 :
34725 : /*
34726 : ScoreShape Node deletion
34727 : */
34728 :
34729 : static void ScoreShape_Del(GF_Node *node)
34730 : {
34731 0 : M_ScoreShape *p = (M_ScoreShape *) node;
34732 0 : gf_node_unregister((GF_Node *) p->score, (GF_Node *) p);
34733 0 : gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
34734 0 : gf_node_free((GF_Node *) p);
34735 0 : }
34736 :
34737 : static const u16 ScoreShape_Def2All[] = { 0, 1};
34738 : static const u16 ScoreShape_In2All[] = { 0, 1};
34739 : static const u16 ScoreShape_Out2All[] = { 0, 1};
34740 :
34741 : static u32 ScoreShape_get_field_count(GF_Node *node, u8 IndexMode)
34742 : {
34743 0 : switch(IndexMode) {
34744 : case GF_SG_FIELD_CODING_IN:
34745 0 : return 2;
34746 : case GF_SG_FIELD_CODING_DEF:
34747 0 : return 2;
34748 : case GF_SG_FIELD_CODING_OUT:
34749 0 : return 2;
34750 : case GF_SG_FIELD_CODING_DYN:
34751 0 : return 0;
34752 : default:
34753 0 : return 2;
34754 : }
34755 0 : }
34756 :
34757 : static GF_Err ScoreShape_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
34758 : {
34759 0 : switch(IndexMode) {
34760 : case GF_SG_FIELD_CODING_IN:
34761 0 : *allField = ScoreShape_In2All[inField];
34762 0 : return GF_OK;
34763 : case GF_SG_FIELD_CODING_DEF:
34764 0 : *allField = ScoreShape_Def2All[inField];
34765 0 : return GF_OK;
34766 : case GF_SG_FIELD_CODING_OUT:
34767 0 : *allField = ScoreShape_Out2All[inField];
34768 0 : return GF_OK;
34769 : default:
34770 0 : return GF_BAD_PARAM;
34771 : }
34772 0 : }
34773 : static GF_Err ScoreShape_get_field(GF_Node *node, GF_FieldInfo *info)
34774 : {
34775 0 : switch (info->fieldIndex) {
34776 : case 0:
34777 0 : info->name = "score";
34778 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34779 0 : info->fieldType = GF_SG_VRML_SFNODE;
34780 0 : info->NDTtype = NDT_SFMusicScoreNode;
34781 0 : info->far_ptr = & ((M_ScoreShape *)node)->score;
34782 0 : return GF_OK;
34783 : case 1:
34784 0 : info->name = "geometry";
34785 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34786 0 : info->fieldType = GF_SG_VRML_SFNODE;
34787 0 : info->NDTtype = NDT_SF2DNode;
34788 0 : info->far_ptr = & ((M_ScoreShape *)node)->geometry;
34789 0 : return GF_OK;
34790 : default:
34791 0 : return GF_BAD_PARAM;
34792 : }
34793 0 : }
34794 :
34795 :
34796 : static s32 ScoreShape_get_field_index_by_name(char *name)
34797 : {
34798 0 : if (!strcmp("score", name)) return 0;
34799 0 : if (!strcmp("geometry", name)) return 1;
34800 0 : return -1;
34801 0 : }
34802 : static Bool ScoreShape_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
34803 : {
34804 : switch (FieldIndex) {
34805 : default:
34806 0 : return 0;
34807 : }
34808 : }
34809 :
34810 :
34811 :
34812 : GF_Node *ScoreShape_Create()
34813 : {
34814 : M_ScoreShape *p;
34815 0 : GF_SAFEALLOC(p, M_ScoreShape);
34816 0 : if(!p) return NULL;
34817 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ScoreShape);
34818 :
34819 : /*default field values*/
34820 0 : return (GF_Node *)p;
34821 0 : }
34822 :
34823 :
34824 : /*
34825 : MusicScore Node deletion
34826 : */
34827 :
34828 : static void MusicScore_Del(GF_Node *node)
34829 : {
34830 0 : M_MusicScore *p = (M_MusicScore *) node;
34831 0 : gf_sg_sfstring_del(p->gotoLabel);
34832 0 : gf_sg_mfstring_del(p->argumentsOnExecute);
34833 0 : gf_sg_sfstring_del(p->commandOnExecute);
34834 0 : gf_sg_mfstring_del(p->partsLyrics);
34835 0 : gf_sg_mfint32_del(p->partsShown);
34836 0 : gf_sg_mfurl_del(p->url);
34837 0 : gf_sg_mfurl_del(p->urlSA);
34838 0 : gf_sg_sfstring_del(p->viewType);
34839 0 : gf_sg_sfstring_del(p->activatedLink);
34840 0 : gf_sg_mfstring_del(p->availableCommands);
34841 0 : gf_sg_mfstring_del(p->availableLabels);
34842 0 : gf_sg_mfstring_del(p->availableLyricLanguages);
34843 0 : gf_sg_mfstring_del(p->availableViewTypes);
34844 0 : gf_sg_mfstring_del(p->partNames);
34845 0 : gf_node_free((GF_Node *) p);
34846 0 : }
34847 :
34848 : static const u16 MusicScore_Def2All[] = { 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
34849 : static const u16 MusicScore_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
34850 : static const u16 MusicScore_Out2All[] = { 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30};
34851 : static const u16 MusicScore_Dyn2All[] = { 14};
34852 :
34853 : static u32 MusicScore_get_field_count(GF_Node *node, u8 IndexMode)
34854 : {
34855 0 : switch(IndexMode) {
34856 : case GF_SG_FIELD_CODING_IN:
34857 0 : return 21;
34858 : case GF_SG_FIELD_CODING_DEF:
34859 0 : return 16;
34860 : case GF_SG_FIELD_CODING_OUT:
34861 0 : return 26;
34862 : case GF_SG_FIELD_CODING_DYN:
34863 0 : return 1;
34864 : default:
34865 0 : return 31;
34866 : }
34867 0 : }
34868 :
34869 : static GF_Err MusicScore_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
34870 : {
34871 0 : switch(IndexMode) {
34872 : case GF_SG_FIELD_CODING_IN:
34873 0 : *allField = MusicScore_In2All[inField];
34874 0 : return GF_OK;
34875 : case GF_SG_FIELD_CODING_DEF:
34876 0 : *allField = MusicScore_Def2All[inField];
34877 0 : return GF_OK;
34878 : case GF_SG_FIELD_CODING_OUT:
34879 0 : *allField = MusicScore_Out2All[inField];
34880 0 : return GF_OK;
34881 : case GF_SG_FIELD_CODING_DYN:
34882 0 : *allField = MusicScore_Dyn2All[inField];
34883 0 : return GF_OK;
34884 : default:
34885 0 : return GF_BAD_PARAM;
34886 : }
34887 0 : }
34888 : static GF_Err MusicScore_get_field(GF_Node *node, GF_FieldInfo *info)
34889 : {
34890 0 : switch (info->fieldIndex) {
34891 : case 0:
34892 0 : info->name = "executeCommand";
34893 0 : info->eventType = GF_SG_EVENT_IN;
34894 0 : info->on_event_in = ((M_MusicScore *)node)->on_executeCommand;
34895 0 : info->fieldType = GF_SG_VRML_SFBOOL;
34896 0 : info->far_ptr = & ((M_MusicScore *) node)->executeCommand;
34897 0 : return GF_OK;
34898 : case 1:
34899 0 : info->name = "gotoLabel";
34900 0 : info->eventType = GF_SG_EVENT_IN;
34901 0 : info->on_event_in = ((M_MusicScore *)node)->on_gotoLabel;
34902 0 : info->fieldType = GF_SG_VRML_SFSTRING;
34903 0 : info->far_ptr = & ((M_MusicScore *) node)->gotoLabel;
34904 0 : return GF_OK;
34905 : case 2:
34906 0 : info->name = "gotoMeasure";
34907 0 : info->eventType = GF_SG_EVENT_IN;
34908 0 : info->on_event_in = ((M_MusicScore *)node)->on_gotoMeasure;
34909 0 : info->fieldType = GF_SG_VRML_SFINT32;
34910 0 : info->far_ptr = & ((M_MusicScore *) node)->gotoMeasure;
34911 0 : return GF_OK;
34912 : case 3:
34913 0 : info->name = "highlightTimePosition";
34914 0 : info->eventType = GF_SG_EVENT_IN;
34915 0 : info->on_event_in = ((M_MusicScore *)node)->on_highlightTimePosition;
34916 0 : info->fieldType = GF_SG_VRML_SFTIME;
34917 0 : info->far_ptr = & ((M_MusicScore *) node)->highlightTimePosition;
34918 0 : return GF_OK;
34919 : case 4:
34920 0 : info->name = "mousePosition";
34921 0 : info->eventType = GF_SG_EVENT_IN;
34922 0 : info->on_event_in = ((M_MusicScore *)node)->on_mousePosition;
34923 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
34924 0 : info->far_ptr = & ((M_MusicScore *) node)->mousePosition;
34925 0 : return GF_OK;
34926 : case 5:
34927 0 : info->name = "argumentsOnExecute";
34928 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34929 0 : info->fieldType = GF_SG_VRML_MFSTRING;
34930 0 : info->far_ptr = & ((M_MusicScore *) node)->argumentsOnExecute;
34931 0 : return GF_OK;
34932 : case 6:
34933 0 : info->name = "commandOnExecute";
34934 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34935 0 : info->fieldType = GF_SG_VRML_SFSTRING;
34936 0 : info->far_ptr = & ((M_MusicScore *) node)->commandOnExecute;
34937 0 : return GF_OK;
34938 : case 7:
34939 0 : info->name = "firstVisibleMeasure";
34940 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34941 0 : info->fieldType = GF_SG_VRML_SFINT32;
34942 0 : info->far_ptr = & ((M_MusicScore *) node)->firstVisibleMeasure;
34943 0 : return GF_OK;
34944 : case 8:
34945 0 : info->name = "hyperlinkEnable";
34946 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34947 0 : info->fieldType = GF_SG_VRML_SFBOOL;
34948 0 : info->far_ptr = & ((M_MusicScore *) node)->hyperlinkEnable;
34949 0 : return GF_OK;
34950 : case 9:
34951 0 : info->name = "loop";
34952 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34953 0 : info->fieldType = GF_SG_VRML_SFBOOL;
34954 0 : info->far_ptr = & ((M_MusicScore *) node)->loop;
34955 0 : return GF_OK;
34956 : case 10:
34957 0 : info->name = "partsLyrics";
34958 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34959 0 : info->fieldType = GF_SG_VRML_MFSTRING;
34960 0 : info->far_ptr = & ((M_MusicScore *) node)->partsLyrics;
34961 0 : return GF_OK;
34962 : case 11:
34963 0 : info->name = "partsShown";
34964 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34965 0 : info->fieldType = GF_SG_VRML_MFINT32;
34966 0 : info->far_ptr = & ((M_MusicScore *) node)->partsShown;
34967 0 : return GF_OK;
34968 : case 12:
34969 0 : info->name = "scoreOffset";
34970 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34971 0 : info->fieldType = GF_SG_VRML_SFTIME;
34972 0 : info->far_ptr = & ((M_MusicScore *) node)->scoreOffset;
34973 0 : return GF_OK;
34974 : case 13:
34975 0 : info->name = "size";
34976 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34977 0 : info->fieldType = GF_SG_VRML_SFVEC2F;
34978 0 : info->far_ptr = & ((M_MusicScore *) node)->size;
34979 0 : return GF_OK;
34980 : case 14:
34981 0 : info->name = "speed";
34982 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34983 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
34984 0 : info->far_ptr = & ((M_MusicScore *) node)->speed;
34985 0 : return GF_OK;
34986 : case 15:
34987 0 : info->name = "startTime";
34988 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34989 0 : info->fieldType = GF_SG_VRML_SFTIME;
34990 0 : info->far_ptr = & ((M_MusicScore *) node)->startTime;
34991 0 : return GF_OK;
34992 : case 16:
34993 0 : info->name = "stopTime";
34994 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34995 0 : info->fieldType = GF_SG_VRML_SFTIME;
34996 0 : info->far_ptr = & ((M_MusicScore *) node)->stopTime;
34997 0 : return GF_OK;
34998 : case 17:
34999 0 : info->name = "transpose";
35000 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35001 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35002 0 : info->far_ptr = & ((M_MusicScore *) node)->transpose;
35003 0 : return GF_OK;
35004 : case 18:
35005 0 : info->name = "url";
35006 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35007 0 : info->fieldType = GF_SG_VRML_MFURL;
35008 0 : info->far_ptr = & ((M_MusicScore *) node)->url;
35009 0 : return GF_OK;
35010 : case 19:
35011 0 : info->name = "urlSA";
35012 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35013 0 : info->fieldType = GF_SG_VRML_MFURL;
35014 0 : info->far_ptr = & ((M_MusicScore *) node)->urlSA;
35015 0 : return GF_OK;
35016 : case 20:
35017 0 : info->name = "viewType";
35018 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35019 0 : info->fieldType = GF_SG_VRML_SFSTRING;
35020 0 : info->far_ptr = & ((M_MusicScore *) node)->viewType;
35021 0 : return GF_OK;
35022 : case 21:
35023 0 : info->name = "activatedLink";
35024 0 : info->eventType = GF_SG_EVENT_OUT;
35025 0 : info->fieldType = GF_SG_VRML_SFSTRING;
35026 0 : info->far_ptr = & ((M_MusicScore *) node)->activatedLink;
35027 0 : return GF_OK;
35028 : case 22:
35029 0 : info->name = "availableCommands";
35030 0 : info->eventType = GF_SG_EVENT_OUT;
35031 0 : info->fieldType = GF_SG_VRML_MFSTRING;
35032 0 : info->far_ptr = & ((M_MusicScore *) node)->availableCommands;
35033 0 : return GF_OK;
35034 : case 23:
35035 0 : info->name = "availableLabels";
35036 0 : info->eventType = GF_SG_EVENT_OUT;
35037 0 : info->fieldType = GF_SG_VRML_MFSTRING;
35038 0 : info->far_ptr = & ((M_MusicScore *) node)->availableLabels;
35039 0 : return GF_OK;
35040 : case 24:
35041 0 : info->name = "availableLyricLanguages";
35042 0 : info->eventType = GF_SG_EVENT_OUT;
35043 0 : info->fieldType = GF_SG_VRML_MFSTRING;
35044 0 : info->far_ptr = & ((M_MusicScore *) node)->availableLyricLanguages;
35045 0 : return GF_OK;
35046 : case 25:
35047 0 : info->name = "availableViewTypes";
35048 0 : info->eventType = GF_SG_EVENT_OUT;
35049 0 : info->fieldType = GF_SG_VRML_MFSTRING;
35050 0 : info->far_ptr = & ((M_MusicScore *) node)->availableViewTypes;
35051 0 : return GF_OK;
35052 : case 26:
35053 0 : info->name = "isActive";
35054 0 : info->eventType = GF_SG_EVENT_OUT;
35055 0 : info->fieldType = GF_SG_VRML_SFBOOL;
35056 0 : info->far_ptr = & ((M_MusicScore *) node)->isActive;
35057 0 : return GF_OK;
35058 : case 27:
35059 0 : info->name = "highlightPosition";
35060 0 : info->eventType = GF_SG_EVENT_OUT;
35061 0 : info->fieldType = GF_SG_VRML_SFVEC3F;
35062 0 : info->far_ptr = & ((M_MusicScore *) node)->highlightPosition;
35063 0 : return GF_OK;
35064 : case 28:
35065 0 : info->name = "lastVisibleMeasure";
35066 0 : info->eventType = GF_SG_EVENT_OUT;
35067 0 : info->fieldType = GF_SG_VRML_SFINT32;
35068 0 : info->far_ptr = & ((M_MusicScore *) node)->lastVisibleMeasure;
35069 0 : return GF_OK;
35070 : case 29:
35071 0 : info->name = "numMeasures";
35072 0 : info->eventType = GF_SG_EVENT_OUT;
35073 0 : info->fieldType = GF_SG_VRML_SFINT32;
35074 0 : info->far_ptr = & ((M_MusicScore *) node)->numMeasures;
35075 0 : return GF_OK;
35076 : case 30:
35077 0 : info->name = "partNames";
35078 0 : info->eventType = GF_SG_EVENT_OUT;
35079 0 : info->fieldType = GF_SG_VRML_MFSTRING;
35080 0 : info->far_ptr = & ((M_MusicScore *) node)->partNames;
35081 0 : return GF_OK;
35082 : default:
35083 0 : return GF_BAD_PARAM;
35084 : }
35085 0 : }
35086 :
35087 :
35088 : static s32 MusicScore_get_field_index_by_name(char *name)
35089 : {
35090 0 : if (!strcmp("executeCommand", name)) return 0;
35091 0 : if (!strcmp("gotoLabel", name)) return 1;
35092 0 : if (!strcmp("gotoMeasure", name)) return 2;
35093 0 : if (!strcmp("highlightTimePosition", name)) return 3;
35094 0 : if (!strcmp("mousePosition", name)) return 4;
35095 0 : if (!strcmp("argumentsOnExecute", name)) return 5;
35096 0 : if (!strcmp("commandOnExecute", name)) return 6;
35097 0 : if (!strcmp("firstVisibleMeasure", name)) return 7;
35098 0 : if (!strcmp("hyperlinkEnable", name)) return 8;
35099 0 : if (!strcmp("loop", name)) return 9;
35100 0 : if (!strcmp("partsLyrics", name)) return 10;
35101 0 : if (!strcmp("partsShown", name)) return 11;
35102 0 : if (!strcmp("scoreOffset", name)) return 12;
35103 0 : if (!strcmp("size", name)) return 13;
35104 0 : if (!strcmp("speed", name)) return 14;
35105 0 : if (!strcmp("startTime", name)) return 15;
35106 0 : if (!strcmp("stopTime", name)) return 16;
35107 0 : if (!strcmp("transpose", name)) return 17;
35108 0 : if (!strcmp("url", name)) return 18;
35109 0 : if (!strcmp("urlSA", name)) return 19;
35110 0 : if (!strcmp("viewType", name)) return 20;
35111 0 : if (!strcmp("activatedLink", name)) return 21;
35112 0 : if (!strcmp("availableCommands", name)) return 22;
35113 0 : if (!strcmp("availableLabels", name)) return 23;
35114 0 : if (!strcmp("availableLyricLanguages", name)) return 24;
35115 0 : if (!strcmp("availableViewTypes", name)) return 25;
35116 0 : if (!strcmp("isActive", name)) return 26;
35117 0 : if (!strcmp("highlightPosition", name)) return 27;
35118 0 : if (!strcmp("lastVisibleMeasure", name)) return 28;
35119 0 : if (!strcmp("numMeasures", name)) return 29;
35120 0 : if (!strcmp("partNames", name)) return 30;
35121 0 : return -1;
35122 0 : }
35123 : static Bool MusicScore_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
35124 : {
35125 0 : switch (FieldIndex) {
35126 : case 14:
35127 0 : *AType = 7;
35128 0 : *QType = 0;
35129 0 : *b_min = FIX_MIN;
35130 0 : *b_max = FIX_MAX;
35131 0 : return 1;
35132 : default:
35133 0 : return 0;
35134 : }
35135 0 : }
35136 :
35137 :
35138 :
35139 : GF_Node *MusicScore_Create()
35140 : {
35141 : M_MusicScore *p;
35142 0 : GF_SAFEALLOC(p, M_MusicScore);
35143 0 : if(!p) return NULL;
35144 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MusicScore);
35145 :
35146 : /*default field values*/
35147 0 : p->firstVisibleMeasure = 0;
35148 0 : p->hyperlinkEnable = 1;
35149 0 : p->scoreOffset = 0.0;
35150 0 : p->size.x = FLT2FIX(-1);
35151 0 : p->size.y = FLT2FIX(-1);
35152 0 : p->speed = FLT2FIX(1.0);
35153 0 : p->startTime = 0;
35154 0 : p->stopTime = 0;
35155 0 : p->transpose = FLT2FIX(0.0);
35156 0 : return (GF_Node *)p;
35157 0 : }
35158 :
35159 :
35160 : /*
35161 : FootPrintSetNode Node deletion
35162 : */
35163 :
35164 : static void FootPrintSetNode_Del(GF_Node *node)
35165 : {
35166 0 : M_FootPrintSetNode *p = (M_FootPrintSetNode *) node;
35167 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
35168 0 : gf_node_free((GF_Node *) p);
35169 0 : }
35170 :
35171 : static const u16 FootPrintSetNode_Def2All[] = { 0};
35172 : static const u16 FootPrintSetNode_In2All[] = { 0};
35173 : static const u16 FootPrintSetNode_Out2All[] = { 0};
35174 :
35175 : static u32 FootPrintSetNode_get_field_count(GF_Node *node, u8 IndexMode)
35176 : {
35177 0 : switch(IndexMode) {
35178 : case GF_SG_FIELD_CODING_IN:
35179 0 : return 1;
35180 : case GF_SG_FIELD_CODING_DEF:
35181 0 : return 1;
35182 : case GF_SG_FIELD_CODING_OUT:
35183 0 : return 1;
35184 : case GF_SG_FIELD_CODING_DYN:
35185 0 : return 0;
35186 : default:
35187 0 : return 1;
35188 : }
35189 0 : }
35190 :
35191 : static GF_Err FootPrintSetNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
35192 : {
35193 0 : switch(IndexMode) {
35194 : case GF_SG_FIELD_CODING_IN:
35195 0 : *allField = FootPrintSetNode_In2All[inField];
35196 0 : return GF_OK;
35197 : case GF_SG_FIELD_CODING_DEF:
35198 0 : *allField = FootPrintSetNode_Def2All[inField];
35199 0 : return GF_OK;
35200 : case GF_SG_FIELD_CODING_OUT:
35201 0 : *allField = FootPrintSetNode_Out2All[inField];
35202 0 : return GF_OK;
35203 : default:
35204 0 : return GF_BAD_PARAM;
35205 : }
35206 0 : }
35207 : static GF_Err FootPrintSetNode_get_field(GF_Node *node, GF_FieldInfo *info)
35208 : {
35209 0 : switch (info->fieldIndex) {
35210 : case 0:
35211 0 : info->name = "children";
35212 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35213 0 : info->fieldType = GF_SG_VRML_MFNODE;
35214 0 : info->NDTtype = NDT_SFGeometryNode;
35215 0 : info->far_ptr = & ((M_FootPrintSetNode *)node)->children;
35216 0 : return GF_OK;
35217 : default:
35218 0 : return GF_BAD_PARAM;
35219 : }
35220 0 : }
35221 :
35222 :
35223 : static s32 FootPrintSetNode_get_field_index_by_name(char *name)
35224 : {
35225 0 : if (!strcmp("children", name)) return 0;
35226 0 : return -1;
35227 0 : }
35228 : static Bool FootPrintSetNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
35229 : {
35230 : switch (FieldIndex) {
35231 : default:
35232 0 : return 0;
35233 : }
35234 : }
35235 :
35236 :
35237 :
35238 : GF_Node *FootPrintSetNode_Create()
35239 : {
35240 : M_FootPrintSetNode *p;
35241 0 : GF_SAFEALLOC(p, M_FootPrintSetNode);
35242 0 : if(!p) return NULL;
35243 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FootPrintSetNode);
35244 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
35245 :
35246 : /*default field values*/
35247 0 : return (GF_Node *)p;
35248 0 : }
35249 :
35250 :
35251 : /*
35252 : FootPrintNode Node deletion
35253 : */
35254 :
35255 : static void FootPrintNode_Del(GF_Node *node)
35256 : {
35257 0 : M_FootPrintNode *p = (M_FootPrintNode *) node;
35258 0 : gf_node_unregister((GF_Node *) p->footprint, (GF_Node *) p);
35259 0 : gf_node_free((GF_Node *) p);
35260 0 : }
35261 :
35262 : static const u16 FootPrintNode_Def2All[] = { 0, 1};
35263 : static const u16 FootPrintNode_In2All[] = { 0, 1};
35264 : static const u16 FootPrintNode_Out2All[] = { 0, 1};
35265 :
35266 : static u32 FootPrintNode_get_field_count(GF_Node *node, u8 IndexMode)
35267 : {
35268 0 : switch(IndexMode) {
35269 : case GF_SG_FIELD_CODING_IN:
35270 0 : return 2;
35271 : case GF_SG_FIELD_CODING_DEF:
35272 0 : return 2;
35273 : case GF_SG_FIELD_CODING_OUT:
35274 0 : return 2;
35275 : case GF_SG_FIELD_CODING_DYN:
35276 0 : return 0;
35277 : default:
35278 0 : return 2;
35279 : }
35280 0 : }
35281 :
35282 : static GF_Err FootPrintNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
35283 : {
35284 0 : switch(IndexMode) {
35285 : case GF_SG_FIELD_CODING_IN:
35286 0 : *allField = FootPrintNode_In2All[inField];
35287 0 : return GF_OK;
35288 : case GF_SG_FIELD_CODING_DEF:
35289 0 : *allField = FootPrintNode_Def2All[inField];
35290 0 : return GF_OK;
35291 : case GF_SG_FIELD_CODING_OUT:
35292 0 : *allField = FootPrintNode_Out2All[inField];
35293 0 : return GF_OK;
35294 : default:
35295 0 : return GF_BAD_PARAM;
35296 : }
35297 0 : }
35298 : static GF_Err FootPrintNode_get_field(GF_Node *node, GF_FieldInfo *info)
35299 : {
35300 0 : switch (info->fieldIndex) {
35301 : case 0:
35302 0 : info->name = "index";
35303 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35304 0 : info->fieldType = GF_SG_VRML_SFINT32;
35305 0 : info->far_ptr = & ((M_FootPrintNode *) node)->index;
35306 0 : return GF_OK;
35307 : case 1:
35308 0 : info->name = "footprint";
35309 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35310 0 : info->fieldType = GF_SG_VRML_SFNODE;
35311 0 : info->NDTtype = NDT_SFGeometryNode;
35312 0 : info->far_ptr = & ((M_FootPrintNode *)node)->footprint;
35313 0 : return GF_OK;
35314 : default:
35315 0 : return GF_BAD_PARAM;
35316 : }
35317 0 : }
35318 :
35319 :
35320 : static s32 FootPrintNode_get_field_index_by_name(char *name)
35321 : {
35322 0 : if (!strcmp("index", name)) return 0;
35323 0 : if (!strcmp("footprint", name)) return 1;
35324 0 : return -1;
35325 0 : }
35326 : static Bool FootPrintNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
35327 : {
35328 : switch (FieldIndex) {
35329 : default:
35330 0 : return 0;
35331 : }
35332 : }
35333 :
35334 :
35335 :
35336 : GF_Node *FootPrintNode_Create()
35337 : {
35338 : M_FootPrintNode *p;
35339 0 : GF_SAFEALLOC(p, M_FootPrintNode);
35340 0 : if(!p) return NULL;
35341 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FootPrintNode);
35342 :
35343 : /*default field values*/
35344 0 : p->index = -1;
35345 0 : return (GF_Node *)p;
35346 0 : }
35347 :
35348 :
35349 : /*
35350 : BuildingPartNode Node deletion
35351 : */
35352 :
35353 : static void BuildingPartNode_Del(GF_Node *node)
35354 : {
35355 0 : M_BuildingPartNode *p = (M_BuildingPartNode *) node;
35356 0 : gf_node_unregister((GF_Node *) p->footprint, (GF_Node *) p);
35357 0 : gf_node_unregister_children((GF_Node *) p, p->alternativeGeometry);
35358 0 : gf_node_unregister_children((GF_Node *) p, p->roofs);
35359 0 : gf_node_unregister_children((GF_Node *) p, p->facades);
35360 0 : gf_node_free((GF_Node *) p);
35361 0 : }
35362 :
35363 : static const u16 BuildingPartNode_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
35364 : static const u16 BuildingPartNode_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
35365 : static const u16 BuildingPartNode_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
35366 :
35367 : static u32 BuildingPartNode_get_field_count(GF_Node *node, u8 IndexMode)
35368 : {
35369 0 : switch(IndexMode) {
35370 : case GF_SG_FIELD_CODING_IN:
35371 0 : return 8;
35372 : case GF_SG_FIELD_CODING_DEF:
35373 0 : return 8;
35374 : case GF_SG_FIELD_CODING_OUT:
35375 0 : return 8;
35376 : case GF_SG_FIELD_CODING_DYN:
35377 0 : return 0;
35378 : default:
35379 0 : return 8;
35380 : }
35381 0 : }
35382 :
35383 : static GF_Err BuildingPartNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
35384 : {
35385 0 : switch(IndexMode) {
35386 : case GF_SG_FIELD_CODING_IN:
35387 0 : *allField = BuildingPartNode_In2All[inField];
35388 0 : return GF_OK;
35389 : case GF_SG_FIELD_CODING_DEF:
35390 0 : *allField = BuildingPartNode_Def2All[inField];
35391 0 : return GF_OK;
35392 : case GF_SG_FIELD_CODING_OUT:
35393 0 : *allField = BuildingPartNode_Out2All[inField];
35394 0 : return GF_OK;
35395 : default:
35396 0 : return GF_BAD_PARAM;
35397 : }
35398 0 : }
35399 : static GF_Err BuildingPartNode_get_field(GF_Node *node, GF_FieldInfo *info)
35400 : {
35401 0 : switch (info->fieldIndex) {
35402 : case 0:
35403 0 : info->name = "index";
35404 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35405 0 : info->fieldType = GF_SG_VRML_SFINT32;
35406 0 : info->far_ptr = & ((M_BuildingPartNode *) node)->index;
35407 0 : return GF_OK;
35408 : case 1:
35409 0 : info->name = "footprint";
35410 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35411 0 : info->fieldType = GF_SG_VRML_SFNODE;
35412 0 : info->NDTtype = NDT_SFGeometryNode;
35413 0 : info->far_ptr = & ((M_BuildingPartNode *)node)->footprint;
35414 0 : return GF_OK;
35415 : case 2:
35416 0 : info->name = "buildingIndex";
35417 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35418 0 : info->fieldType = GF_SG_VRML_SFINT32;
35419 0 : info->far_ptr = & ((M_BuildingPartNode *) node)->buildingIndex;
35420 0 : return GF_OK;
35421 : case 3:
35422 0 : info->name = "height";
35423 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35424 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35425 0 : info->far_ptr = & ((M_BuildingPartNode *) node)->height;
35426 0 : return GF_OK;
35427 : case 4:
35428 0 : info->name = "altitude";
35429 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35430 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35431 0 : info->far_ptr = & ((M_BuildingPartNode *) node)->altitude;
35432 0 : return GF_OK;
35433 : case 5:
35434 0 : info->name = "alternativeGeometry";
35435 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35436 0 : info->fieldType = GF_SG_VRML_MFNODE;
35437 0 : info->NDTtype = NDT_SFGeometryNode;
35438 0 : info->far_ptr = & ((M_BuildingPartNode *)node)->alternativeGeometry;
35439 0 : return GF_OK;
35440 : case 6:
35441 0 : info->name = "roofs";
35442 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35443 0 : info->fieldType = GF_SG_VRML_MFNODE;
35444 0 : info->NDTtype = NDT_SFGeometryNode;
35445 0 : info->far_ptr = & ((M_BuildingPartNode *)node)->roofs;
35446 0 : return GF_OK;
35447 : case 7:
35448 0 : info->name = "facades";
35449 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35450 0 : info->fieldType = GF_SG_VRML_MFNODE;
35451 0 : info->NDTtype = NDT_SFGeometryNode;
35452 0 : info->far_ptr = & ((M_BuildingPartNode *)node)->facades;
35453 0 : return GF_OK;
35454 : default:
35455 0 : return GF_BAD_PARAM;
35456 : }
35457 0 : }
35458 :
35459 :
35460 : static s32 BuildingPartNode_get_field_index_by_name(char *name)
35461 : {
35462 0 : if (!strcmp("index", name)) return 0;
35463 0 : if (!strcmp("footprint", name)) return 1;
35464 0 : if (!strcmp("buildingIndex", name)) return 2;
35465 0 : if (!strcmp("height", name)) return 3;
35466 0 : if (!strcmp("altitude", name)) return 4;
35467 0 : if (!strcmp("alternativeGeometry", name)) return 5;
35468 0 : if (!strcmp("roofs", name)) return 6;
35469 0 : if (!strcmp("facades", name)) return 7;
35470 0 : return -1;
35471 0 : }
35472 : static Bool BuildingPartNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
35473 : {
35474 : switch (FieldIndex) {
35475 : default:
35476 0 : return 0;
35477 : }
35478 : }
35479 :
35480 :
35481 :
35482 : GF_Node *BuildingPartNode_Create()
35483 : {
35484 : M_BuildingPartNode *p;
35485 0 : GF_SAFEALLOC(p, M_BuildingPartNode);
35486 0 : if(!p) return NULL;
35487 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_BuildingPartNode);
35488 :
35489 : /*default field values*/
35490 0 : p->index = -1;
35491 0 : p->buildingIndex = -1;
35492 0 : p->height = FLT2FIX(0);
35493 0 : p->altitude = FLT2FIX(0);
35494 0 : return (GF_Node *)p;
35495 0 : }
35496 :
35497 :
35498 : /*
35499 : RoofNode Node deletion
35500 : */
35501 :
35502 : static void RoofNode_Del(GF_Node *node)
35503 : {
35504 0 : M_RoofNode *p = (M_RoofNode *) node;
35505 0 : gf_sg_mffloat_del(p->SlopeAngle);
35506 0 : gf_sg_sfurl_del(p->RoofTextureURL);
35507 0 : gf_node_free((GF_Node *) p);
35508 0 : }
35509 :
35510 : static const u16 RoofNode_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
35511 : static const u16 RoofNode_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
35512 : static const u16 RoofNode_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
35513 :
35514 : static u32 RoofNode_get_field_count(GF_Node *node, u8 IndexMode)
35515 : {
35516 0 : switch(IndexMode) {
35517 : case GF_SG_FIELD_CODING_IN:
35518 0 : return 12;
35519 : case GF_SG_FIELD_CODING_DEF:
35520 0 : return 12;
35521 : case GF_SG_FIELD_CODING_OUT:
35522 0 : return 12;
35523 : case GF_SG_FIELD_CODING_DYN:
35524 0 : return 0;
35525 : default:
35526 0 : return 12;
35527 : }
35528 0 : }
35529 :
35530 : static GF_Err RoofNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
35531 : {
35532 0 : switch(IndexMode) {
35533 : case GF_SG_FIELD_CODING_IN:
35534 0 : *allField = RoofNode_In2All[inField];
35535 0 : return GF_OK;
35536 : case GF_SG_FIELD_CODING_DEF:
35537 0 : *allField = RoofNode_Def2All[inField];
35538 0 : return GF_OK;
35539 : case GF_SG_FIELD_CODING_OUT:
35540 0 : *allField = RoofNode_Out2All[inField];
35541 0 : return GF_OK;
35542 : default:
35543 0 : return GF_BAD_PARAM;
35544 : }
35545 0 : }
35546 : static GF_Err RoofNode_get_field(GF_Node *node, GF_FieldInfo *info)
35547 : {
35548 0 : switch (info->fieldIndex) {
35549 : case 0:
35550 0 : info->name = "Type";
35551 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35552 0 : info->fieldType = GF_SG_VRML_SFINT32;
35553 0 : info->far_ptr = & ((M_RoofNode *) node)->Type;
35554 0 : return GF_OK;
35555 : case 1:
35556 0 : info->name = "Height";
35557 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35558 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35559 0 : info->far_ptr = & ((M_RoofNode *) node)->Height;
35560 0 : return GF_OK;
35561 : case 2:
35562 0 : info->name = "SlopeAngle";
35563 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35564 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
35565 0 : info->far_ptr = & ((M_RoofNode *) node)->SlopeAngle;
35566 0 : return GF_OK;
35567 : case 3:
35568 0 : info->name = "EaveProjection";
35569 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35570 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35571 0 : info->far_ptr = & ((M_RoofNode *) node)->EaveProjection;
35572 0 : return GF_OK;
35573 : case 4:
35574 0 : info->name = "EdgeSupportIndex";
35575 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35576 0 : info->fieldType = GF_SG_VRML_SFINT32;
35577 0 : info->far_ptr = & ((M_RoofNode *) node)->EdgeSupportIndex;
35578 0 : return GF_OK;
35579 : case 5:
35580 0 : info->name = "RoofTextureURL";
35581 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35582 0 : info->fieldType = GF_SG_VRML_SFURL;
35583 0 : info->far_ptr = & ((M_RoofNode *) node)->RoofTextureURL;
35584 0 : return GF_OK;
35585 : case 6:
35586 0 : info->name = "IsGenericTexture";
35587 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35588 0 : info->fieldType = GF_SG_VRML_SFBOOL;
35589 0 : info->far_ptr = & ((M_RoofNode *) node)->IsGenericTexture;
35590 0 : return GF_OK;
35591 : case 7:
35592 0 : info->name = "TextureXScale";
35593 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35594 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35595 0 : info->far_ptr = & ((M_RoofNode *) node)->TextureXScale;
35596 0 : return GF_OK;
35597 : case 8:
35598 0 : info->name = "TextureYScale";
35599 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35600 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35601 0 : info->far_ptr = & ((M_RoofNode *) node)->TextureYScale;
35602 0 : return GF_OK;
35603 : case 9:
35604 0 : info->name = "TextureXPosition";
35605 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35606 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35607 0 : info->far_ptr = & ((M_RoofNode *) node)->TextureXPosition;
35608 0 : return GF_OK;
35609 : case 10:
35610 0 : info->name = "TextureYPosition";
35611 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35612 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35613 0 : info->far_ptr = & ((M_RoofNode *) node)->TextureYPosition;
35614 0 : return GF_OK;
35615 : case 11:
35616 0 : info->name = "TextureRotation";
35617 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35618 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35619 0 : info->far_ptr = & ((M_RoofNode *) node)->TextureRotation;
35620 0 : return GF_OK;
35621 : default:
35622 0 : return GF_BAD_PARAM;
35623 : }
35624 0 : }
35625 :
35626 :
35627 : static s32 RoofNode_get_field_index_by_name(char *name)
35628 : {
35629 0 : if (!strcmp("Type", name)) return 0;
35630 0 : if (!strcmp("Height", name)) return 1;
35631 0 : if (!strcmp("SlopeAngle", name)) return 2;
35632 0 : if (!strcmp("EaveProjection", name)) return 3;
35633 0 : if (!strcmp("EdgeSupportIndex", name)) return 4;
35634 0 : if (!strcmp("RoofTextureURL", name)) return 5;
35635 0 : if (!strcmp("IsGenericTexture", name)) return 6;
35636 0 : if (!strcmp("TextureXScale", name)) return 7;
35637 0 : if (!strcmp("TextureYScale", name)) return 8;
35638 0 : if (!strcmp("TextureXPosition", name)) return 9;
35639 0 : if (!strcmp("TextureYPosition", name)) return 10;
35640 0 : if (!strcmp("TextureRotation", name)) return 11;
35641 0 : return -1;
35642 0 : }
35643 : static Bool RoofNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
35644 : {
35645 : switch (FieldIndex) {
35646 : default:
35647 0 : return 0;
35648 : }
35649 : }
35650 :
35651 :
35652 :
35653 : GF_Node *RoofNode_Create()
35654 : {
35655 : M_RoofNode *p;
35656 0 : GF_SAFEALLOC(p, M_RoofNode);
35657 0 : if(!p) return NULL;
35658 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_RoofNode);
35659 :
35660 : /*default field values*/
35661 0 : p->Type = 0;
35662 0 : p->Height = FLT2FIX(0.0);
35663 0 : p->SlopeAngle.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
35664 0 : p->SlopeAngle.count = 1;
35665 0 : p->SlopeAngle.vals[0] = FLT2FIX(0.0);
35666 0 : p->EaveProjection = FLT2FIX(0.0);
35667 0 : p->EdgeSupportIndex = -1;
35668 0 : p->IsGenericTexture = 1;
35669 0 : p->TextureXScale = FLT2FIX(1.0);
35670 0 : p->TextureYScale = FLT2FIX(1.0);
35671 0 : p->TextureXPosition = FLT2FIX(0.0);
35672 0 : p->TextureYPosition = FLT2FIX(0.0);
35673 0 : p->TextureRotation = FLT2FIX(0.0);
35674 0 : return (GF_Node *)p;
35675 0 : }
35676 :
35677 :
35678 : /*
35679 : FacadeNode Node deletion
35680 : */
35681 :
35682 : static void FacadeNode_Del(GF_Node *node)
35683 : {
35684 0 : M_FacadeNode *p = (M_FacadeNode *) node;
35685 0 : gf_sg_sfurl_del(p->FacadePrimitive);
35686 0 : gf_sg_mfint32_del(p->NbFacadeCellsByStorey);
35687 0 : gf_sg_mffloat_del(p->StoreyHeight);
35688 0 : gf_node_unregister_children((GF_Node *) p, p->FacadeCellsArray);
35689 0 : gf_node_free((GF_Node *) p);
35690 0 : }
35691 :
35692 : static const u16 FacadeNode_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
35693 : static const u16 FacadeNode_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
35694 : static const u16 FacadeNode_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
35695 :
35696 : static u32 FacadeNode_get_field_count(GF_Node *node, u8 IndexMode)
35697 : {
35698 0 : switch(IndexMode) {
35699 : case GF_SG_FIELD_CODING_IN:
35700 0 : return 13;
35701 : case GF_SG_FIELD_CODING_DEF:
35702 0 : return 13;
35703 : case GF_SG_FIELD_CODING_OUT:
35704 0 : return 13;
35705 : case GF_SG_FIELD_CODING_DYN:
35706 0 : return 0;
35707 : default:
35708 0 : return 13;
35709 : }
35710 0 : }
35711 :
35712 : static GF_Err FacadeNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
35713 : {
35714 0 : switch(IndexMode) {
35715 : case GF_SG_FIELD_CODING_IN:
35716 0 : *allField = FacadeNode_In2All[inField];
35717 0 : return GF_OK;
35718 : case GF_SG_FIELD_CODING_DEF:
35719 0 : *allField = FacadeNode_Def2All[inField];
35720 0 : return GF_OK;
35721 : case GF_SG_FIELD_CODING_OUT:
35722 0 : *allField = FacadeNode_Out2All[inField];
35723 0 : return GF_OK;
35724 : default:
35725 0 : return GF_BAD_PARAM;
35726 : }
35727 0 : }
35728 : static GF_Err FacadeNode_get_field(GF_Node *node, GF_FieldInfo *info)
35729 : {
35730 0 : switch (info->fieldIndex) {
35731 : case 0:
35732 0 : info->name = "WidthRatio";
35733 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35734 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35735 0 : info->far_ptr = & ((M_FacadeNode *) node)->WidthRatio;
35736 0 : return GF_OK;
35737 : case 1:
35738 0 : info->name = "XScale";
35739 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35740 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35741 0 : info->far_ptr = & ((M_FacadeNode *) node)->XScale;
35742 0 : return GF_OK;
35743 : case 2:
35744 0 : info->name = "YScale";
35745 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35746 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35747 0 : info->far_ptr = & ((M_FacadeNode *) node)->YScale;
35748 0 : return GF_OK;
35749 : case 3:
35750 0 : info->name = "XPosition";
35751 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35752 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35753 0 : info->far_ptr = & ((M_FacadeNode *) node)->XPosition;
35754 0 : return GF_OK;
35755 : case 4:
35756 0 : info->name = "YPosition";
35757 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35758 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35759 0 : info->far_ptr = & ((M_FacadeNode *) node)->YPosition;
35760 0 : return GF_OK;
35761 : case 5:
35762 0 : info->name = "XRepeatInterval";
35763 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35764 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35765 0 : info->far_ptr = & ((M_FacadeNode *) node)->XRepeatInterval;
35766 0 : return GF_OK;
35767 : case 6:
35768 0 : info->name = "YRepeatInterval";
35769 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35770 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35771 0 : info->far_ptr = & ((M_FacadeNode *) node)->YRepeatInterval;
35772 0 : return GF_OK;
35773 : case 7:
35774 0 : info->name = "Repeat";
35775 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35776 0 : info->fieldType = GF_SG_VRML_SFBOOL;
35777 0 : info->far_ptr = & ((M_FacadeNode *) node)->Repeat;
35778 0 : return GF_OK;
35779 : case 8:
35780 0 : info->name = "FacadePrimitive";
35781 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35782 0 : info->fieldType = GF_SG_VRML_SFURL;
35783 0 : info->far_ptr = & ((M_FacadeNode *) node)->FacadePrimitive;
35784 0 : return GF_OK;
35785 : case 9:
35786 0 : info->name = "NbStories";
35787 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35788 0 : info->fieldType = GF_SG_VRML_SFINT32;
35789 0 : info->far_ptr = & ((M_FacadeNode *) node)->NbStories;
35790 0 : return GF_OK;
35791 : case 10:
35792 0 : info->name = "NbFacadeCellsByStorey";
35793 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35794 0 : info->fieldType = GF_SG_VRML_MFINT32;
35795 0 : info->far_ptr = & ((M_FacadeNode *) node)->NbFacadeCellsByStorey;
35796 0 : return GF_OK;
35797 : case 11:
35798 0 : info->name = "StoreyHeight";
35799 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35800 0 : info->fieldType = GF_SG_VRML_MFFLOAT;
35801 0 : info->far_ptr = & ((M_FacadeNode *) node)->StoreyHeight;
35802 0 : return GF_OK;
35803 : case 12:
35804 0 : info->name = "FacadeCellsArray";
35805 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35806 0 : info->fieldType = GF_SG_VRML_MFNODE;
35807 0 : info->NDTtype = NDT_SFGeometryNode;
35808 0 : info->far_ptr = & ((M_FacadeNode *)node)->FacadeCellsArray;
35809 0 : return GF_OK;
35810 : default:
35811 0 : return GF_BAD_PARAM;
35812 : }
35813 0 : }
35814 :
35815 :
35816 : static s32 FacadeNode_get_field_index_by_name(char *name)
35817 : {
35818 0 : if (!strcmp("WidthRatio", name)) return 0;
35819 0 : if (!strcmp("XScale", name)) return 1;
35820 0 : if (!strcmp("YScale", name)) return 2;
35821 0 : if (!strcmp("XPosition", name)) return 3;
35822 0 : if (!strcmp("YPosition", name)) return 4;
35823 0 : if (!strcmp("XRepeatInterval", name)) return 5;
35824 0 : if (!strcmp("YRepeatInterval", name)) return 6;
35825 0 : if (!strcmp("Repeat", name)) return 7;
35826 0 : if (!strcmp("FacadePrimitive", name)) return 8;
35827 0 : if (!strcmp("NbStories", name)) return 9;
35828 0 : if (!strcmp("NbFacadeCellsByStorey", name)) return 10;
35829 0 : if (!strcmp("StoreyHeight", name)) return 11;
35830 0 : if (!strcmp("FacadeCellsArray", name)) return 12;
35831 0 : return -1;
35832 0 : }
35833 : static Bool FacadeNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
35834 : {
35835 : switch (FieldIndex) {
35836 : default:
35837 0 : return 0;
35838 : }
35839 : }
35840 :
35841 :
35842 :
35843 : GF_Node *FacadeNode_Create()
35844 : {
35845 : M_FacadeNode *p;
35846 0 : GF_SAFEALLOC(p, M_FacadeNode);
35847 0 : if(!p) return NULL;
35848 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FacadeNode);
35849 :
35850 : /*default field values*/
35851 0 : p->WidthRatio = FLT2FIX(1.0);
35852 0 : p->XScale = FLT2FIX(1.0);
35853 0 : p->YScale = FLT2FIX(1.0);
35854 0 : p->XPosition = FLT2FIX(0.0);
35855 0 : p->YPosition = FLT2FIX(0.0);
35856 0 : p->XRepeatInterval = FLT2FIX(0.0);
35857 0 : p->YRepeatInterval = FLT2FIX(0.0);
35858 0 : p->NbStories = 0;
35859 0 : p->NbFacadeCellsByStorey.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
35860 0 : p->NbFacadeCellsByStorey.count = 1;
35861 0 : p->NbFacadeCellsByStorey.vals[0] = 0;
35862 0 : p->StoreyHeight.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
35863 0 : p->StoreyHeight.count = 1;
35864 0 : p->StoreyHeight.vals[0] = FLT2FIX(1.0);
35865 0 : return (GF_Node *)p;
35866 0 : }
35867 :
35868 :
35869 : /*
35870 : Shadow Node deletion
35871 : */
35872 :
35873 : static void Shadow_Del(GF_Node *node)
35874 : {
35875 0 : M_Shadow *p = (M_Shadow *) node;
35876 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
35877 0 : gf_node_free((GF_Node *) p);
35878 0 : }
35879 :
35880 : static const u16 Shadow_Def2All[] = { 2, 3, 4, 5, 6};
35881 : static const u16 Shadow_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
35882 : static const u16 Shadow_Out2All[] = { 2, 3, 4, 5, 6};
35883 :
35884 : static u32 Shadow_get_field_count(GF_Node *node, u8 IndexMode)
35885 : {
35886 0 : switch(IndexMode) {
35887 : case GF_SG_FIELD_CODING_IN:
35888 0 : return 7;
35889 : case GF_SG_FIELD_CODING_DEF:
35890 0 : return 5;
35891 : case GF_SG_FIELD_CODING_OUT:
35892 0 : return 5;
35893 : case GF_SG_FIELD_CODING_DYN:
35894 0 : return 0;
35895 : default:
35896 0 : return 7;
35897 : }
35898 0 : }
35899 :
35900 : static GF_Err Shadow_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
35901 : {
35902 0 : switch(IndexMode) {
35903 : case GF_SG_FIELD_CODING_IN:
35904 0 : *allField = Shadow_In2All[inField];
35905 0 : return GF_OK;
35906 : case GF_SG_FIELD_CODING_DEF:
35907 0 : *allField = Shadow_Def2All[inField];
35908 0 : return GF_OK;
35909 : case GF_SG_FIELD_CODING_OUT:
35910 0 : *allField = Shadow_Out2All[inField];
35911 0 : return GF_OK;
35912 : default:
35913 0 : return GF_BAD_PARAM;
35914 : }
35915 0 : }
35916 : static GF_Err Shadow_get_field(GF_Node *node, GF_FieldInfo *info)
35917 : {
35918 0 : switch (info->fieldIndex) {
35919 : case 0:
35920 0 : info->name = "addChildren";
35921 0 : info->eventType = GF_SG_EVENT_IN;
35922 0 : info->on_event_in = ((M_Shadow *)node)->on_addChildren;
35923 0 : info->fieldType = GF_SG_VRML_SFNODE;
35924 0 : info->NDTtype = NDT_SF3DNode;
35925 0 : info->far_ptr = & ((M_Shadow *)node)->addChildren;
35926 0 : return GF_OK;
35927 : case 1:
35928 0 : info->name = "removeChildren";
35929 0 : info->eventType = GF_SG_EVENT_IN;
35930 0 : info->on_event_in = ((M_Shadow *)node)->on_removeChildren;
35931 0 : info->fieldType = GF_SG_VRML_SFNODE;
35932 0 : info->NDTtype = NDT_SF3DNode;
35933 0 : info->far_ptr = & ((M_Shadow *)node)->removeChildren;
35934 0 : return GF_OK;
35935 : case 2:
35936 0 : info->name = "children";
35937 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35938 0 : info->fieldType = GF_SG_VRML_MFNODE;
35939 0 : info->NDTtype = NDT_SF3DNode;
35940 0 : info->far_ptr = & ((M_Shadow *)node)->children;
35941 0 : return GF_OK;
35942 : case 3:
35943 0 : info->name = "enabled";
35944 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35945 0 : info->fieldType = GF_SG_VRML_SFBOOL;
35946 0 : info->far_ptr = & ((M_Shadow *) node)->enabled;
35947 0 : return GF_OK;
35948 : case 4:
35949 0 : info->name = "cast";
35950 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35951 0 : info->fieldType = GF_SG_VRML_SFBOOL;
35952 0 : info->far_ptr = & ((M_Shadow *) node)->cast;
35953 0 : return GF_OK;
35954 : case 5:
35955 0 : info->name = "receive";
35956 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35957 0 : info->fieldType = GF_SG_VRML_SFBOOL;
35958 0 : info->far_ptr = & ((M_Shadow *) node)->receive;
35959 0 : return GF_OK;
35960 : case 6:
35961 0 : info->name = "penumbra";
35962 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35963 0 : info->fieldType = GF_SG_VRML_SFFLOAT;
35964 0 : info->far_ptr = & ((M_Shadow *) node)->penumbra;
35965 0 : return GF_OK;
35966 : default:
35967 0 : return GF_BAD_PARAM;
35968 : }
35969 0 : }
35970 :
35971 :
35972 : static s32 Shadow_get_field_index_by_name(char *name)
35973 : {
35974 0 : if (!strcmp("addChildren", name)) return 0;
35975 0 : if (!strcmp("removeChildren", name)) return 1;
35976 0 : if (!strcmp("children", name)) return 2;
35977 0 : if (!strcmp("enabled", name)) return 3;
35978 0 : if (!strcmp("cast", name)) return 4;
35979 0 : if (!strcmp("receive", name)) return 5;
35980 0 : if (!strcmp("penumbra", name)) return 6;
35981 0 : return -1;
35982 0 : }
35983 : static Bool Shadow_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
35984 : {
35985 : switch (FieldIndex) {
35986 : default:
35987 0 : return 0;
35988 : }
35989 : }
35990 :
35991 :
35992 :
35993 : GF_Node *Shadow_Create()
35994 : {
35995 : M_Shadow *p;
35996 0 : GF_SAFEALLOC(p, M_Shadow);
35997 0 : if(!p) return NULL;
35998 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Shadow);
35999 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
36000 :
36001 : /*default field values*/
36002 0 : p->enabled = 1;
36003 0 : p->cast = 1;
36004 0 : p->receive = 1;
36005 0 : p->penumbra = FLT2FIX(0);
36006 0 : return (GF_Node *)p;
36007 0 : }
36008 :
36009 :
36010 : /*
36011 : CacheTexture Node deletion
36012 : */
36013 :
36014 : static void CacheTexture_Del(GF_Node *node)
36015 : {
36016 72 : M_CacheTexture *p = (M_CacheTexture *) node;
36017 36 : gf_sg_sfstring_del(p->decoderSpecificInfo);
36018 36 : gf_sg_sfstring_del(p->image);
36019 36 : gf_sg_sfstring_del(p->cacheURL);
36020 36 : gf_sg_mfurl_del(p->cacheOD);
36021 46 : if (p->data) gf_free(p->data);
36022 36 : gf_node_free((GF_Node *) p);
36023 36 : }
36024 :
36025 : static const u16 CacheTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
36026 :
36027 : static u32 CacheTexture_get_field_count(GF_Node *node, u8 IndexMode)
36028 : {
36029 64 : switch(IndexMode) {
36030 : case GF_SG_FIELD_CODING_IN:
36031 0 : return 0;
36032 : case GF_SG_FIELD_CODING_DEF:
36033 18 : return 8;
36034 : case GF_SG_FIELD_CODING_OUT:
36035 0 : return 0;
36036 : case GF_SG_FIELD_CODING_DYN:
36037 0 : return 0;
36038 : default:
36039 14 : return 8;
36040 : }
36041 32 : }
36042 :
36043 : static GF_Err CacheTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
36044 : {
36045 124 : switch(IndexMode) {
36046 : case GF_SG_FIELD_CODING_DEF:
36047 62 : *allField = CacheTexture_Def2All[inField];
36048 62 : return GF_OK;
36049 : default:
36050 0 : return GF_BAD_PARAM;
36051 : }
36052 62 : }
36053 : static GF_Err CacheTexture_get_field(GF_Node *node, GF_FieldInfo *info)
36054 : {
36055 748 : switch (info->fieldIndex) {
36056 : case 0:
36057 66 : info->name = "objectTypeIndication";
36058 66 : info->eventType = GF_SG_EVENT_FIELD;
36059 66 : info->fieldType = GF_SG_VRML_SFINT32;
36060 66 : info->far_ptr = & ((M_CacheTexture *) node)->objectTypeIndication;
36061 66 : return GF_OK;
36062 : case 1:
36063 36 : info->name = "decoderSpecificInfo";
36064 36 : info->eventType = GF_SG_EVENT_FIELD;
36065 36 : info->fieldType = GF_SG_VRML_SFSTRING;
36066 36 : info->far_ptr = & ((M_CacheTexture *) node)->decoderSpecificInfo;
36067 36 : return GF_OK;
36068 : case 2:
36069 62 : info->name = "image";
36070 62 : info->eventType = GF_SG_EVENT_FIELD;
36071 62 : info->fieldType = GF_SG_VRML_SFSTRING;
36072 62 : info->far_ptr = & ((M_CacheTexture *) node)->image;
36073 62 : return GF_OK;
36074 : case 3:
36075 51 : info->name = "cacheURL";
36076 51 : info->eventType = GF_SG_EVENT_FIELD;
36077 51 : info->fieldType = GF_SG_VRML_SFSTRING;
36078 51 : info->far_ptr = & ((M_CacheTexture *) node)->cacheURL;
36079 51 : return GF_OK;
36080 : case 4:
36081 36 : info->name = "cacheOD";
36082 36 : info->eventType = GF_SG_EVENT_FIELD;
36083 36 : info->fieldType = GF_SG_VRML_MFURL;
36084 36 : info->far_ptr = & ((M_CacheTexture *) node)->cacheOD;
36085 36 : return GF_OK;
36086 : case 5:
36087 51 : info->name = "expirationDate";
36088 51 : info->eventType = GF_SG_EVENT_FIELD;
36089 51 : info->fieldType = GF_SG_VRML_SFINT32;
36090 51 : info->far_ptr = & ((M_CacheTexture *) node)->expirationDate;
36091 51 : return GF_OK;
36092 : case 6:
36093 36 : info->name = "repeatS";
36094 36 : info->eventType = GF_SG_EVENT_FIELD;
36095 36 : info->fieldType = GF_SG_VRML_SFBOOL;
36096 36 : info->far_ptr = & ((M_CacheTexture *) node)->repeatS;
36097 36 : return GF_OK;
36098 : case 7:
36099 36 : info->name = "repeatT";
36100 36 : info->eventType = GF_SG_EVENT_FIELD;
36101 36 : info->fieldType = GF_SG_VRML_SFBOOL;
36102 36 : info->far_ptr = & ((M_CacheTexture *) node)->repeatT;
36103 36 : return GF_OK;
36104 : default:
36105 0 : return GF_BAD_PARAM;
36106 : }
36107 374 : }
36108 :
36109 :
36110 : static s32 CacheTexture_get_field_index_by_name(char *name)
36111 : {
36112 56 : if (!strcmp("objectTypeIndication", name)) return 0;
36113 16 : if (!strcmp("decoderSpecificInfo", name)) return 1;
36114 24 : if (!strcmp("image", name)) return 2;
36115 12 : if (!strcmp("cacheURL", name)) return 3;
36116 4 : if (!strcmp("cacheOD", name)) return 4;
36117 8 : if (!strcmp("expirationDate", name)) return 5;
36118 0 : if (!strcmp("repeatS", name)) return 6;
36119 0 : if (!strcmp("repeatT", name)) return 7;
36120 0 : return -1;
36121 24 : }
36122 : static Bool CacheTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
36123 : {
36124 : switch (FieldIndex) {
36125 : default:
36126 0 : return 0;
36127 : }
36128 : }
36129 :
36130 :
36131 :
36132 : GF_Node *CacheTexture_Create()
36133 : {
36134 : M_CacheTexture *p;
36135 108 : GF_SAFEALLOC(p, M_CacheTexture);
36136 36 : if(!p) return NULL;
36137 36 : gf_node_setup((GF_Node *)p, TAG_MPEG4_CacheTexture);
36138 :
36139 : /*default field values*/
36140 36 : p->objectTypeIndication = 0;
36141 36 : p->expirationDate = 0;
36142 36 : p->repeatS = 1;
36143 36 : p->repeatT = 1;
36144 36 : return (GF_Node *)p;
36145 36 : }
36146 :
36147 :
36148 : /*
36149 : EnvironmentTest Node deletion
36150 : */
36151 :
36152 : static void EnvironmentTest_Del(GF_Node *node)
36153 : {
36154 108 : M_EnvironmentTest *p = (M_EnvironmentTest *) node;
36155 54 : gf_sg_sfstring_del(p->compareValue);
36156 54 : gf_sg_sfstring_del(p->parameterValue);
36157 54 : gf_node_free((GF_Node *) p);
36158 54 : }
36159 :
36160 : static const u16 EnvironmentTest_Def2All[] = { 1, 2, 3, 4};
36161 : static const u16 EnvironmentTest_In2All[] = { 0, 1, 2, 3, 4};
36162 : static const u16 EnvironmentTest_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8};
36163 :
36164 : static u32 EnvironmentTest_get_field_count(GF_Node *node, u8 IndexMode)
36165 : {
36166 150 : switch(IndexMode) {
36167 : case GF_SG_FIELD_CODING_IN:
36168 0 : return 5;
36169 : case GF_SG_FIELD_CODING_DEF:
36170 27 : return 4;
36171 : case GF_SG_FIELD_CODING_OUT:
36172 27 : return 8;
36173 : case GF_SG_FIELD_CODING_DYN:
36174 0 : return 0;
36175 : default:
36176 21 : return 9;
36177 : }
36178 75 : }
36179 :
36180 : static GF_Err EnvironmentTest_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
36181 : {
36182 196 : switch(IndexMode) {
36183 : case GF_SG_FIELD_CODING_IN:
36184 0 : *allField = EnvironmentTest_In2All[inField];
36185 0 : return GF_OK;
36186 : case GF_SG_FIELD_CODING_DEF:
36187 39 : *allField = EnvironmentTest_Def2All[inField];
36188 39 : return GF_OK;
36189 : case GF_SG_FIELD_CODING_OUT:
36190 59 : *allField = EnvironmentTest_Out2All[inField];
36191 59 : return GF_OK;
36192 : default:
36193 0 : return GF_BAD_PARAM;
36194 : }
36195 98 : }
36196 : static GF_Err EnvironmentTest_get_field(GF_Node *node, GF_FieldInfo *info)
36197 : {
36198 780 : switch (info->fieldIndex) {
36199 : case 0:
36200 21 : info->name = "evaluate";
36201 21 : info->eventType = GF_SG_EVENT_IN;
36202 21 : info->on_event_in = ((M_EnvironmentTest *)node)->on_evaluate;
36203 21 : info->fieldType = GF_SG_VRML_SFBOOL;
36204 21 : info->far_ptr = & ((M_EnvironmentTest *) node)->evaluate;
36205 21 : return GF_OK;
36206 : case 1:
36207 54 : info->name = "enabled";
36208 54 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36209 54 : info->fieldType = GF_SG_VRML_SFBOOL;
36210 54 : info->far_ptr = & ((M_EnvironmentTest *) node)->enabled;
36211 54 : return GF_OK;
36212 : case 2:
36213 99 : info->name = "parameter";
36214 99 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36215 99 : info->fieldType = GF_SG_VRML_SFINT32;
36216 99 : info->far_ptr = & ((M_EnvironmentTest *) node)->parameter;
36217 99 : return GF_OK;
36218 : case 3:
36219 54 : info->name = "compareValue";
36220 54 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36221 54 : info->fieldType = GF_SG_VRML_SFSTRING;
36222 54 : info->far_ptr = & ((M_EnvironmentTest *) node)->compareValue;
36223 54 : return GF_OK;
36224 : case 4:
36225 54 : info->name = "evaluateOnChange";
36226 54 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36227 54 : info->fieldType = GF_SG_VRML_SFBOOL;
36228 54 : info->far_ptr = & ((M_EnvironmentTest *) node)->evaluateOnChange;
36229 54 : return GF_OK;
36230 : case 5:
36231 21 : info->name = "valueLarger";
36232 21 : info->eventType = GF_SG_EVENT_OUT;
36233 21 : info->fieldType = GF_SG_VRML_SFBOOL;
36234 21 : info->far_ptr = & ((M_EnvironmentTest *) node)->valueLarger;
36235 21 : return GF_OK;
36236 : case 6:
36237 29 : info->name = "valueEqual";
36238 29 : info->eventType = GF_SG_EVENT_OUT;
36239 29 : info->fieldType = GF_SG_VRML_SFBOOL;
36240 29 : info->far_ptr = & ((M_EnvironmentTest *) node)->valueEqual;
36241 29 : return GF_OK;
36242 : case 7:
36243 21 : info->name = "valueSmaller";
36244 21 : info->eventType = GF_SG_EVENT_OUT;
36245 21 : info->fieldType = GF_SG_VRML_SFBOOL;
36246 21 : info->far_ptr = & ((M_EnvironmentTest *) node)->valueSmaller;
36247 21 : return GF_OK;
36248 : case 8:
36249 37 : info->name = "parameterValue";
36250 37 : info->eventType = GF_SG_EVENT_OUT;
36251 37 : info->fieldType = GF_SG_VRML_SFSTRING;
36252 37 : info->far_ptr = & ((M_EnvironmentTest *) node)->parameterValue;
36253 37 : return GF_OK;
36254 : default:
36255 0 : return GF_BAD_PARAM;
36256 : }
36257 390 : }
36258 :
36259 :
36260 : static s32 EnvironmentTest_get_field_index_by_name(char *name)
36261 : {
36262 48 : if (!strcmp("evaluate", name)) return 0;
36263 24 : if (!strcmp("enabled", name)) return 1;
36264 36 : if (!strcmp("parameter", name)) return 2;
36265 12 : if (!strcmp("compareValue", name)) return 3;
36266 12 : if (!strcmp("evaluateOnChange", name)) return 4;
36267 12 : if (!strcmp("valueLarger", name)) return 5;
36268 16 : if (!strcmp("valueEqual", name)) return 6;
36269 8 : if (!strcmp("valueSmaller", name)) return 7;
36270 16 : if (!strcmp("parameterValue", name)) return 8;
36271 0 : return -1;
36272 24 : }
36273 : static Bool EnvironmentTest_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
36274 : {
36275 : switch (FieldIndex) {
36276 : default:
36277 0 : return 0;
36278 : }
36279 : }
36280 :
36281 :
36282 :
36283 : GF_Node *EnvironmentTest_Create()
36284 : {
36285 : M_EnvironmentTest *p;
36286 162 : GF_SAFEALLOC(p, M_EnvironmentTest);
36287 54 : if(!p) return NULL;
36288 54 : gf_node_setup((GF_Node *)p, TAG_MPEG4_EnvironmentTest);
36289 :
36290 : /*default field values*/
36291 54 : p->enabled = 1;
36292 54 : p->parameter = 0;
36293 54 : p->evaluateOnChange = 1;
36294 54 : return (GF_Node *)p;
36295 54 : }
36296 :
36297 :
36298 : /*
36299 : KeyNavigator Node deletion
36300 : */
36301 :
36302 : static void KeyNavigator_Del(GF_Node *node)
36303 : {
36304 132 : M_KeyNavigator *p = (M_KeyNavigator *) node;
36305 66 : gf_node_unregister((GF_Node *) p->sensor, (GF_Node *) p);
36306 66 : gf_node_unregister((GF_Node *) p->left, (GF_Node *) p);
36307 66 : gf_node_unregister((GF_Node *) p->right, (GF_Node *) p);
36308 66 : gf_node_unregister((GF_Node *) p->up, (GF_Node *) p);
36309 66 : gf_node_unregister((GF_Node *) p->down, (GF_Node *) p);
36310 66 : gf_node_unregister((GF_Node *) p->select, (GF_Node *) p);
36311 66 : gf_node_unregister((GF_Node *) p->quit, (GF_Node *) p);
36312 66 : gf_node_free((GF_Node *) p);
36313 66 : }
36314 :
36315 : static const u16 KeyNavigator_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8};
36316 : static const u16 KeyNavigator_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
36317 : static const u16 KeyNavigator_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
36318 :
36319 : static u32 KeyNavigator_get_field_count(GF_Node *node, u8 IndexMode)
36320 : {
36321 312 : switch(IndexMode) {
36322 : case GF_SG_FIELD_CODING_IN:
36323 6 : return 9;
36324 : case GF_SG_FIELD_CODING_DEF:
36325 24 : return 8;
36326 : case GF_SG_FIELD_CODING_OUT:
36327 48 : return 9;
36328 : case GF_SG_FIELD_CODING_DYN:
36329 0 : return 0;
36330 : default:
36331 78 : return 10;
36332 : }
36333 156 : }
36334 :
36335 : static GF_Err KeyNavigator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
36336 : {
36337 508 : switch(IndexMode) {
36338 : case GF_SG_FIELD_CODING_IN:
36339 4 : *allField = KeyNavigator_In2All[inField];
36340 4 : return GF_OK;
36341 : case GF_SG_FIELD_CODING_DEF:
36342 90 : *allField = KeyNavigator_Def2All[inField];
36343 90 : return GF_OK;
36344 : case GF_SG_FIELD_CODING_OUT:
36345 160 : *allField = KeyNavigator_Out2All[inField];
36346 160 : return GF_OK;
36347 : default:
36348 0 : return GF_BAD_PARAM;
36349 : }
36350 254 : }
36351 : static GF_Err KeyNavigator_get_field(GF_Node *node, GF_FieldInfo *info)
36352 : {
36353 1416 : switch (info->fieldIndex) {
36354 : case 0:
36355 90 : info->name = "setFocus";
36356 90 : info->eventType = GF_SG_EVENT_IN;
36357 90 : info->on_event_in = ((M_KeyNavigator *)node)->on_setFocus;
36358 90 : info->fieldType = GF_SG_VRML_SFBOOL;
36359 90 : info->far_ptr = & ((M_KeyNavigator *) node)->setFocus;
36360 90 : return GF_OK;
36361 : case 1:
36362 134 : info->name = "sensor";
36363 134 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36364 134 : info->fieldType = GF_SG_VRML_SFNODE;
36365 134 : info->NDTtype = NDT_SF3DNode;
36366 134 : info->far_ptr = & ((M_KeyNavigator *)node)->sensor;
36367 134 : return GF_OK;
36368 : case 2:
36369 86 : info->name = "left";
36370 86 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36371 86 : info->fieldType = GF_SG_VRML_SFNODE;
36372 86 : info->NDTtype = NDT_SF2DNode;
36373 86 : info->far_ptr = & ((M_KeyNavigator *)node)->left;
36374 86 : return GF_OK;
36375 : case 3:
36376 76 : info->name = "right";
36377 76 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36378 76 : info->fieldType = GF_SG_VRML_SFNODE;
36379 76 : info->NDTtype = NDT_SF2DNode;
36380 76 : info->far_ptr = & ((M_KeyNavigator *)node)->right;
36381 76 : return GF_OK;
36382 : case 4:
36383 70 : info->name = "up";
36384 70 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36385 70 : info->fieldType = GF_SG_VRML_SFNODE;
36386 70 : info->NDTtype = NDT_SF2DNode;
36387 70 : info->far_ptr = & ((M_KeyNavigator *)node)->up;
36388 70 : return GF_OK;
36389 : case 5:
36390 58 : info->name = "down";
36391 58 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36392 58 : info->fieldType = GF_SG_VRML_SFNODE;
36393 58 : info->NDTtype = NDT_SF2DNode;
36394 58 : info->far_ptr = & ((M_KeyNavigator *)node)->down;
36395 58 : return GF_OK;
36396 : case 6:
36397 42 : info->name = "select";
36398 42 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36399 42 : info->fieldType = GF_SG_VRML_SFNODE;
36400 42 : info->NDTtype = NDT_SF2DNode;
36401 42 : info->far_ptr = & ((M_KeyNavigator *)node)->select;
36402 42 : return GF_OK;
36403 : case 7:
36404 24 : info->name = "quit";
36405 24 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36406 24 : info->fieldType = GF_SG_VRML_SFNODE;
36407 24 : info->NDTtype = NDT_SF2DNode;
36408 24 : info->far_ptr = & ((M_KeyNavigator *)node)->quit;
36409 24 : return GF_OK;
36410 : case 8:
36411 48 : info->name = "step";
36412 48 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36413 48 : info->fieldType = GF_SG_VRML_SFFLOAT;
36414 48 : info->far_ptr = & ((M_KeyNavigator *) node)->step;
36415 48 : return GF_OK;
36416 : case 9:
36417 80 : info->name = "focusSet";
36418 80 : info->eventType = GF_SG_EVENT_OUT;
36419 80 : info->fieldType = GF_SG_VRML_SFBOOL;
36420 80 : info->far_ptr = & ((M_KeyNavigator *) node)->focusSet;
36421 80 : return GF_OK;
36422 : default:
36423 0 : return GF_BAD_PARAM;
36424 : }
36425 708 : }
36426 :
36427 :
36428 : static s32 KeyNavigator_get_field_index_by_name(char *name)
36429 : {
36430 180 : if (!strcmp("setFocus", name)) return 0;
36431 100 : if (!strcmp("sensor", name)) return 1;
36432 76 : if (!strcmp("left", name)) return 2;
36433 68 : if (!strcmp("right", name)) return 3;
36434 60 : if (!strcmp("up", name)) return 4;
36435 52 : if (!strcmp("down", name)) return 5;
36436 40 : if (!strcmp("select", name)) return 6;
36437 32 : if (!strcmp("quit", name)) return 7;
36438 32 : if (!strcmp("step", name)) return 8;
36439 64 : if (!strcmp("focusSet", name)) return 9;
36440 0 : return -1;
36441 88 : }
36442 : static Bool KeyNavigator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
36443 : {
36444 : switch (FieldIndex) {
36445 : default:
36446 0 : return 0;
36447 : }
36448 : }
36449 :
36450 :
36451 :
36452 : GF_Node *KeyNavigator_Create()
36453 : {
36454 : M_KeyNavigator *p;
36455 198 : GF_SAFEALLOC(p, M_KeyNavigator);
36456 66 : if(!p) return NULL;
36457 66 : gf_node_setup((GF_Node *)p, TAG_MPEG4_KeyNavigator);
36458 :
36459 : /*default field values*/
36460 66 : p->step = FLT2FIX(0);
36461 66 : return (GF_Node *)p;
36462 66 : }
36463 :
36464 :
36465 : /*
36466 : SpacePartition Node deletion
36467 : */
36468 :
36469 : static void SpacePartition_Del(GF_Node *node)
36470 : {
36471 0 : M_SpacePartition *p = (M_SpacePartition *) node;
36472 0 : gf_sg_sfurl_del(p->SPStream);
36473 0 : gf_sg_vrml_parent_destroy((GF_Node *) p);
36474 0 : gf_node_free((GF_Node *) p);
36475 0 : }
36476 :
36477 : static const u16 SpacePartition_Def2All[] = { 2, 3};
36478 : static const u16 SpacePartition_In2All[] = { 0, 1, 2, 3};
36479 : static const u16 SpacePartition_Out2All[] = { 2, 3};
36480 :
36481 : static u32 SpacePartition_get_field_count(GF_Node *node, u8 IndexMode)
36482 : {
36483 0 : switch(IndexMode) {
36484 : case GF_SG_FIELD_CODING_IN:
36485 0 : return 4;
36486 : case GF_SG_FIELD_CODING_DEF:
36487 0 : return 2;
36488 : case GF_SG_FIELD_CODING_OUT:
36489 0 : return 2;
36490 : case GF_SG_FIELD_CODING_DYN:
36491 0 : return 0;
36492 : default:
36493 0 : return 4;
36494 : }
36495 0 : }
36496 :
36497 : static GF_Err SpacePartition_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
36498 : {
36499 0 : switch(IndexMode) {
36500 : case GF_SG_FIELD_CODING_IN:
36501 0 : *allField = SpacePartition_In2All[inField];
36502 0 : return GF_OK;
36503 : case GF_SG_FIELD_CODING_DEF:
36504 0 : *allField = SpacePartition_Def2All[inField];
36505 0 : return GF_OK;
36506 : case GF_SG_FIELD_CODING_OUT:
36507 0 : *allField = SpacePartition_Out2All[inField];
36508 0 : return GF_OK;
36509 : default:
36510 0 : return GF_BAD_PARAM;
36511 : }
36512 0 : }
36513 : static GF_Err SpacePartition_get_field(GF_Node *node, GF_FieldInfo *info)
36514 : {
36515 0 : switch (info->fieldIndex) {
36516 : case 0:
36517 0 : info->name = "addChildren";
36518 0 : info->eventType = GF_SG_EVENT_IN;
36519 0 : info->on_event_in = ((M_SpacePartition *)node)->on_addChildren;
36520 0 : info->fieldType = GF_SG_VRML_MFNODE;
36521 0 : info->NDTtype = NDT_SF3DNode;
36522 0 : info->far_ptr = & ((M_SpacePartition *)node)->addChildren;
36523 0 : return GF_OK;
36524 : case 1:
36525 0 : info->name = "removeChildren";
36526 0 : info->eventType = GF_SG_EVENT_IN;
36527 0 : info->on_event_in = ((M_SpacePartition *)node)->on_removeChildren;
36528 0 : info->fieldType = GF_SG_VRML_MFNODE;
36529 0 : info->NDTtype = NDT_SF3DNode;
36530 0 : info->far_ptr = & ((M_SpacePartition *)node)->removeChildren;
36531 0 : return GF_OK;
36532 : case 2:
36533 0 : info->name = "children";
36534 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36535 0 : info->fieldType = GF_SG_VRML_MFNODE;
36536 0 : info->NDTtype = NDT_SF3DNode;
36537 0 : info->far_ptr = & ((M_SpacePartition *)node)->children;
36538 0 : return GF_OK;
36539 : case 3:
36540 0 : info->name = "SPStream";
36541 0 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36542 0 : info->fieldType = GF_SG_VRML_SFURL;
36543 0 : info->far_ptr = & ((M_SpacePartition *) node)->SPStream;
36544 0 : return GF_OK;
36545 : default:
36546 0 : return GF_BAD_PARAM;
36547 : }
36548 0 : }
36549 :
36550 :
36551 : static s32 SpacePartition_get_field_index_by_name(char *name)
36552 : {
36553 0 : if (!strcmp("addChildren", name)) return 0;
36554 0 : if (!strcmp("removeChildren", name)) return 1;
36555 0 : if (!strcmp("children", name)) return 2;
36556 0 : if (!strcmp("SPStream", name)) return 3;
36557 0 : return -1;
36558 0 : }
36559 : static Bool SpacePartition_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
36560 : {
36561 : switch (FieldIndex) {
36562 : default:
36563 0 : return 0;
36564 : }
36565 : }
36566 :
36567 :
36568 :
36569 : GF_Node *SpacePartition_Create()
36570 : {
36571 : M_SpacePartition *p;
36572 0 : GF_SAFEALLOC(p, M_SpacePartition);
36573 0 : if(!p) return NULL;
36574 0 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SpacePartition);
36575 0 : gf_sg_vrml_parent_setup((GF_Node *) p);
36576 :
36577 : /*default field values*/
36578 0 : return (GF_Node *)p;
36579 0 : }
36580 :
36581 :
36582 : /*
36583 : Storage Node deletion
36584 : */
36585 :
36586 : static void Storage_Del(GF_Node *node)
36587 : {
36588 36 : M_Storage *p = (M_Storage *) node;
36589 18 : gf_sg_sfstring_del(p->name);
36590 18 : gf_sg_mfattrref_del(p->storageList);
36591 18 : gf_node_free((GF_Node *) p);
36592 18 : }
36593 :
36594 : static const u16 Storage_Def2All[] = { 2, 3, 4, 5};
36595 : static const u16 Storage_In2All[] = { 0, 1, 2};
36596 : static const u16 Storage_Out2All[] = { 2};
36597 :
36598 : static u32 Storage_get_field_count(GF_Node *node, u8 IndexMode)
36599 : {
36600 32 : switch(IndexMode) {
36601 : case GF_SG_FIELD_CODING_IN:
36602 0 : return 3;
36603 : case GF_SG_FIELD_CODING_DEF:
36604 9 : return 4;
36605 : case GF_SG_FIELD_CODING_OUT:
36606 0 : return 1;
36607 : case GF_SG_FIELD_CODING_DYN:
36608 0 : return 0;
36609 : default:
36610 7 : return 6;
36611 : }
36612 16 : }
36613 :
36614 : static GF_Err Storage_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
36615 : {
36616 46 : switch(IndexMode) {
36617 : case GF_SG_FIELD_CODING_IN:
36618 0 : *allField = Storage_In2All[inField];
36619 0 : return GF_OK;
36620 : case GF_SG_FIELD_CODING_DEF:
36621 23 : *allField = Storage_Def2All[inField];
36622 23 : return GF_OK;
36623 : case GF_SG_FIELD_CODING_OUT:
36624 0 : *allField = Storage_Out2All[inField];
36625 0 : return GF_OK;
36626 : default:
36627 0 : return GF_BAD_PARAM;
36628 : }
36629 23 : }
36630 : static GF_Err Storage_get_field(GF_Node *node, GF_FieldInfo *info)
36631 : {
36632 254 : switch (info->fieldIndex) {
36633 : case 0:
36634 7 : info->name = "forceSave";
36635 7 : info->eventType = GF_SG_EVENT_IN;
36636 7 : info->on_event_in = ((M_Storage *)node)->on_forceSave;
36637 7 : info->fieldType = GF_SG_VRML_SFBOOL;
36638 7 : info->far_ptr = & ((M_Storage *) node)->forceSave;
36639 7 : return GF_OK;
36640 : case 1:
36641 7 : info->name = "forceRestore";
36642 7 : info->eventType = GF_SG_EVENT_IN;
36643 7 : info->on_event_in = ((M_Storage *)node)->on_forceRestore;
36644 7 : info->fieldType = GF_SG_VRML_SFBOOL;
36645 7 : info->far_ptr = & ((M_Storage *) node)->forceRestore;
36646 7 : return GF_OK;
36647 : case 2:
36648 18 : info->name = "auto";
36649 18 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36650 18 : info->fieldType = GF_SG_VRML_SFBOOL;
36651 18 : info->far_ptr = & ((M_Storage *) node)->_auto;
36652 18 : return GF_OK;
36653 : case 3:
36654 33 : info->name = "expireAfter";
36655 33 : info->eventType = GF_SG_EVENT_FIELD;
36656 33 : info->fieldType = GF_SG_VRML_SFINT32;
36657 33 : info->far_ptr = & ((M_Storage *) node)->expireAfter;
36658 33 : return GF_OK;
36659 : case 4:
36660 33 : info->name = "name";
36661 33 : info->eventType = GF_SG_EVENT_FIELD;
36662 33 : info->fieldType = GF_SG_VRML_SFSTRING;
36663 33 : info->far_ptr = & ((M_Storage *) node)->name;
36664 33 : return GF_OK;
36665 : case 5:
36666 29 : info->name = "storageList";
36667 29 : info->eventType = GF_SG_EVENT_FIELD;
36668 29 : info->fieldType = GF_SG_VRML_MFATTRREF;
36669 29 : info->far_ptr = & ((M_Storage *) node)->storageList;
36670 29 : return GF_OK;
36671 : default:
36672 0 : return GF_BAD_PARAM;
36673 : }
36674 127 : }
36675 :
36676 :
36677 : static s32 Storage_get_field_index_by_name(char *name)
36678 : {
36679 32 : if (!strcmp("forceSave", name)) return 0;
36680 16 : if (!strcmp("forceRestore", name)) return 1;
36681 16 : if (!strcmp("auto", name)) return 2;
36682 20 : if (!strcmp("expireAfter", name)) return 3;
36683 16 : if (!strcmp("name", name)) return 4;
36684 12 : if (!strcmp("storageList", name)) return 5;
36685 4 : return -1;
36686 16 : }
36687 : static Bool Storage_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
36688 : {
36689 : switch (FieldIndex) {
36690 : default:
36691 0 : return 0;
36692 : }
36693 : }
36694 :
36695 :
36696 :
36697 : GF_Node *Storage_Create()
36698 : {
36699 : M_Storage *p;
36700 54 : GF_SAFEALLOC(p, M_Storage);
36701 18 : if(!p) return NULL;
36702 18 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Storage);
36703 :
36704 : /*default field values*/
36705 18 : p->_auto = 1;
36706 18 : p->expireAfter = 0;
36707 18 : return (GF_Node *)p;
36708 18 : }
36709 :
36710 :
36711 :
36712 :
36713 : GF_Node *gf_sg_mpeg4_node_new(u32 NodeTag)
36714 : {
36715 404890 : switch (NodeTag) {
36716 : case TAG_MPEG4_Anchor:
36717 92 : return Anchor_Create();
36718 : case TAG_MPEG4_AnimationStream:
36719 126 : return AnimationStream_Create();
36720 : case TAG_MPEG4_Appearance:
36721 21658 : return Appearance_Create();
36722 : case TAG_MPEG4_AudioBuffer:
36723 18 : return AudioBuffer_Create();
36724 : case TAG_MPEG4_AudioClip:
36725 90 : return AudioClip_Create();
36726 : case TAG_MPEG4_AudioDelay:
36727 0 : return AudioDelay_Create();
36728 : case TAG_MPEG4_AudioFX:
36729 0 : return AudioFX_Create();
36730 : case TAG_MPEG4_AudioMix:
36731 0 : return AudioMix_Create();
36732 : case TAG_MPEG4_AudioSource:
36733 125 : return AudioSource_Create();
36734 : case TAG_MPEG4_AudioSwitch:
36735 0 : return AudioSwitch_Create();
36736 : case TAG_MPEG4_Background:
36737 61 : return Background_Create();
36738 : case TAG_MPEG4_Background2D:
36739 5232 : return Background2D_Create();
36740 : case TAG_MPEG4_Billboard:
36741 54 : return Billboard_Create();
36742 : case TAG_MPEG4_Bitmap:
36743 578 : return Bitmap_Create();
36744 : case TAG_MPEG4_Box:
36745 928 : return Box_Create();
36746 : case TAG_MPEG4_Circle:
36747 2964 : return Circle_Create();
36748 : case TAG_MPEG4_Collision:
36749 36 : return Collision_Create();
36750 : case TAG_MPEG4_Color:
36751 152 : return Color_Create();
36752 : case TAG_MPEG4_ColorInterpolator:
36753 108 : return ColorInterpolator_Create();
36754 : case TAG_MPEG4_CompositeTexture2D:
36755 82 : return CompositeTexture2D_Create();
36756 : case TAG_MPEG4_CompositeTexture3D:
36757 36 : return CompositeTexture3D_Create();
36758 : case TAG_MPEG4_Conditional:
36759 8859 : return Conditional_Create();
36760 : case TAG_MPEG4_Cone:
36761 108 : return Cone_Create();
36762 : case TAG_MPEG4_Coordinate:
36763 85 : return Coordinate_Create();
36764 : case TAG_MPEG4_Coordinate2D:
36765 4134 : return Coordinate2D_Create();
36766 : case TAG_MPEG4_CoordinateInterpolator:
36767 0 : return CoordinateInterpolator_Create();
36768 : case TAG_MPEG4_CoordinateInterpolator2D:
36769 36 : return CoordinateInterpolator2D_Create();
36770 : case TAG_MPEG4_Curve2D:
36771 1740 : return Curve2D_Create();
36772 : case TAG_MPEG4_Cylinder:
36773 270 : return Cylinder_Create();
36774 : case TAG_MPEG4_CylinderSensor:
36775 18 : return CylinderSensor_Create();
36776 : case TAG_MPEG4_DirectionalLight:
36777 90 : return DirectionalLight_Create();
36778 : case TAG_MPEG4_DiscSensor:
36779 54 : return DiscSensor_Create();
36780 : case TAG_MPEG4_ElevationGrid:
36781 18 : return ElevationGrid_Create();
36782 : case TAG_MPEG4_Expression:
36783 0 : return Expression_Create();
36784 : case TAG_MPEG4_Extrusion:
36785 18 : return Extrusion_Create();
36786 : case TAG_MPEG4_Face:
36787 0 : return Face_Create();
36788 : case TAG_MPEG4_FaceDefMesh:
36789 0 : return FaceDefMesh_Create();
36790 : case TAG_MPEG4_FaceDefTables:
36791 0 : return FaceDefTables_Create();
36792 : case TAG_MPEG4_FaceDefTransform:
36793 0 : return FaceDefTransform_Create();
36794 : case TAG_MPEG4_FAP:
36795 0 : return FAP_Create();
36796 : case TAG_MPEG4_FDP:
36797 0 : return FDP_Create();
36798 : case TAG_MPEG4_FIT:
36799 0 : return FIT_Create();
36800 : case TAG_MPEG4_Fog:
36801 18 : return Fog_Create();
36802 : case TAG_MPEG4_FontStyle:
36803 7836 : return FontStyle_Create();
36804 : case TAG_MPEG4_Form:
36805 285 : return Form_Create();
36806 : case TAG_MPEG4_Group:
36807 1434 : return Group_Create();
36808 : case TAG_MPEG4_ImageTexture:
36809 1000 : return ImageTexture_Create();
36810 : case TAG_MPEG4_IndexedFaceSet:
36811 57 : return IndexedFaceSet_Create();
36812 : case TAG_MPEG4_IndexedFaceSet2D:
36813 1529 : return IndexedFaceSet2D_Create();
36814 : case TAG_MPEG4_IndexedLineSet:
36815 36 : return IndexedLineSet_Create();
36816 : case TAG_MPEG4_IndexedLineSet2D:
36817 835 : return IndexedLineSet2D_Create();
36818 : case TAG_MPEG4_Inline:
36819 256 : return Inline_Create();
36820 : case TAG_MPEG4_LOD:
36821 18 : return LOD_Create();
36822 : case TAG_MPEG4_Layer2D:
36823 367 : return Layer2D_Create();
36824 : case TAG_MPEG4_Layer3D:
36825 92 : return Layer3D_Create();
36826 : case TAG_MPEG4_Layout:
36827 2520 : return Layout_Create();
36828 : case TAG_MPEG4_LineProperties:
36829 1348 : return LineProperties_Create();
36830 : case TAG_MPEG4_ListeningPoint:
36831 0 : return ListeningPoint_Create();
36832 : case TAG_MPEG4_Material:
36833 1419 : return Material_Create();
36834 : case TAG_MPEG4_Material2D:
36835 17374 : return Material2D_Create();
36836 : case TAG_MPEG4_MovieTexture:
36837 552 : return MovieTexture_Create();
36838 : case TAG_MPEG4_NavigationInfo:
36839 260 : return NavigationInfo_Create();
36840 : case TAG_MPEG4_Normal:
36841 0 : return Normal_Create();
36842 : case TAG_MPEG4_NormalInterpolator:
36843 0 : return NormalInterpolator_Create();
36844 : case TAG_MPEG4_OrderedGroup:
36845 4754 : return OrderedGroup_Create();
36846 : case TAG_MPEG4_OrientationInterpolator:
36847 289 : return OrientationInterpolator_Create();
36848 : case TAG_MPEG4_PixelTexture:
36849 72 : return PixelTexture_Create();
36850 : case TAG_MPEG4_PlaneSensor:
36851 18 : return PlaneSensor_Create();
36852 : case TAG_MPEG4_PlaneSensor2D:
36853 279 : return PlaneSensor2D_Create();
36854 : case TAG_MPEG4_PointLight:
36855 18 : return PointLight_Create();
36856 : case TAG_MPEG4_PointSet:
36857 18 : return PointSet_Create();
36858 : case TAG_MPEG4_PointSet2D:
36859 92 : return PointSet2D_Create();
36860 : case TAG_MPEG4_PositionInterpolator:
36861 198 : return PositionInterpolator_Create();
36862 : case TAG_MPEG4_PositionInterpolator2D:
36863 610 : return PositionInterpolator2D_Create();
36864 : case TAG_MPEG4_ProximitySensor2D:
36865 36 : return ProximitySensor2D_Create();
36866 : case TAG_MPEG4_ProximitySensor:
36867 18 : return ProximitySensor_Create();
36868 : case TAG_MPEG4_QuantizationParameter:
36869 123 : return QuantizationParameter_Create();
36870 : case TAG_MPEG4_Rectangle:
36871 7135 : return Rectangle_Create();
36872 : case TAG_MPEG4_ScalarInterpolator:
36873 759 : return ScalarInterpolator_Create();
36874 : case TAG_MPEG4_Script:
36875 409 : return Script_Create();
36876 : case TAG_MPEG4_Shape:
36877 32371 : return Shape_Create();
36878 : case TAG_MPEG4_Sound:
36879 36 : return Sound_Create();
36880 : case TAG_MPEG4_Sound2D:
36881 181 : return Sound2D_Create();
36882 : case TAG_MPEG4_Sphere:
36883 198 : return Sphere_Create();
36884 : case TAG_MPEG4_SphereSensor:
36885 18 : return SphereSensor_Create();
36886 : case TAG_MPEG4_SpotLight:
36887 18 : return SpotLight_Create();
36888 : case TAG_MPEG4_Switch:
36889 544 : return Switch_Create();
36890 : case TAG_MPEG4_TermCap:
36891 0 : return TermCap_Create();
36892 : case TAG_MPEG4_Text:
36893 12892 : return Text_Create();
36894 : case TAG_MPEG4_TextureCoordinate:
36895 0 : return TextureCoordinate_Create();
36896 : case TAG_MPEG4_TextureTransform:
36897 234 : return TextureTransform_Create();
36898 : case TAG_MPEG4_TimeSensor:
36899 1867 : return TimeSensor_Create();
36900 : case TAG_MPEG4_TouchSensor:
36901 5957 : return TouchSensor_Create();
36902 : case TAG_MPEG4_Transform:
36903 2471 : return Transform_Create();
36904 : case TAG_MPEG4_Transform2D:
36905 29181 : return Transform2D_Create();
36906 : case TAG_MPEG4_Valuator:
36907 6528 : return Valuator_Create();
36908 : case TAG_MPEG4_Viewpoint:
36909 595 : return Viewpoint_Create();
36910 : case TAG_MPEG4_VisibilitySensor:
36911 18 : return VisibilitySensor_Create();
36912 : case TAG_MPEG4_Viseme:
36913 0 : return Viseme_Create();
36914 : case TAG_MPEG4_WorldInfo:
36915 5346 : return WorldInfo_Create();
36916 : case TAG_MPEG4_AcousticMaterial:
36917 0 : return AcousticMaterial_Create();
36918 : case TAG_MPEG4_AcousticScene:
36919 0 : return AcousticScene_Create();
36920 : case TAG_MPEG4_ApplicationWindow:
36921 0 : return ApplicationWindow_Create();
36922 : case TAG_MPEG4_BAP:
36923 0 : return BAP_Create();
36924 : case TAG_MPEG4_BDP:
36925 0 : return BDP_Create();
36926 : case TAG_MPEG4_Body:
36927 0 : return Body_Create();
36928 : case TAG_MPEG4_BodyDefTable:
36929 0 : return BodyDefTable_Create();
36930 : case TAG_MPEG4_BodySegmentConnectionHint:
36931 0 : return BodySegmentConnectionHint_Create();
36932 : case TAG_MPEG4_DirectiveSound:
36933 0 : return DirectiveSound_Create();
36934 : case TAG_MPEG4_Hierarchical3DMesh:
36935 0 : return Hierarchical3DMesh_Create();
36936 : case TAG_MPEG4_MaterialKey:
36937 18 : return MaterialKey_Create();
36938 : case TAG_MPEG4_PerceptualParameters:
36939 0 : return PerceptualParameters_Create();
36940 : case TAG_MPEG4_TemporalTransform:
36941 0 : return TemporalTransform_Create();
36942 : case TAG_MPEG4_TemporalGroup:
36943 0 : return TemporalGroup_Create();
36944 : case TAG_MPEG4_ServerCommand:
36945 0 : return ServerCommand_Create();
36946 : case TAG_MPEG4_InputSensor:
36947 54 : return InputSensor_Create();
36948 : case TAG_MPEG4_MatteTexture:
36949 0 : return MatteTexture_Create();
36950 : case TAG_MPEG4_MediaBuffer:
36951 0 : return MediaBuffer_Create();
36952 : case TAG_MPEG4_MediaControl:
36953 277 : return MediaControl_Create();
36954 : case TAG_MPEG4_MediaSensor:
36955 240 : return MediaSensor_Create();
36956 : case TAG_MPEG4_BitWrapper:
36957 0 : return BitWrapper_Create();
36958 : case TAG_MPEG4_CoordinateInterpolator4D:
36959 0 : return CoordinateInterpolator4D_Create();
36960 : case TAG_MPEG4_DepthImage:
36961 0 : return DepthImage_Create();
36962 : case TAG_MPEG4_FFD:
36963 0 : return FFD_Create();
36964 : case TAG_MPEG4_Implicit:
36965 0 : return Implicit_Create();
36966 : case TAG_MPEG4_XXLFM_Appearance:
36967 0 : return XXLFM_Appearance_Create();
36968 : case TAG_MPEG4_XXLFM_BlendList:
36969 0 : return XXLFM_BlendList_Create();
36970 : case TAG_MPEG4_XXLFM_FrameList:
36971 0 : return XXLFM_FrameList_Create();
36972 : case TAG_MPEG4_XXLFM_LightMap:
36973 0 : return XXLFM_LightMap_Create();
36974 : case TAG_MPEG4_XXLFM_SurfaceMapList:
36975 0 : return XXLFM_SurfaceMapList_Create();
36976 : case TAG_MPEG4_XXLFM_ViewMapList:
36977 0 : return XXLFM_ViewMapList_Create();
36978 : case TAG_MPEG4_MeshGrid:
36979 0 : return MeshGrid_Create();
36980 : case TAG_MPEG4_NonLinearDeformer:
36981 23 : return NonLinearDeformer_Create();
36982 : case TAG_MPEG4_NurbsCurve:
36983 0 : return NurbsCurve_Create();
36984 : case TAG_MPEG4_NurbsCurve2D:
36985 0 : return NurbsCurve2D_Create();
36986 : case TAG_MPEG4_NurbsSurface:
36987 0 : return NurbsSurface_Create();
36988 : case TAG_MPEG4_OctreeImage:
36989 0 : return OctreeImage_Create();
36990 : case TAG_MPEG4_XXParticles:
36991 0 : return XXParticles_Create();
36992 : case TAG_MPEG4_XXParticleInitBox:
36993 0 : return XXParticleInitBox_Create();
36994 : case TAG_MPEG4_XXPlanarObstacle:
36995 0 : return XXPlanarObstacle_Create();
36996 : case TAG_MPEG4_XXPointAttractor:
36997 0 : return XXPointAttractor_Create();
36998 : case TAG_MPEG4_PointTexture:
36999 0 : return PointTexture_Create();
37000 : case TAG_MPEG4_PositionAnimator:
37001 18 : return PositionAnimator_Create();
37002 : case TAG_MPEG4_PositionAnimator2D:
37003 18 : return PositionAnimator2D_Create();
37004 : case TAG_MPEG4_PositionInterpolator4D:
37005 0 : return PositionInterpolator4D_Create();
37006 : case TAG_MPEG4_ProceduralTexture:
37007 0 : return ProceduralTexture_Create();
37008 : case TAG_MPEG4_Quadric:
37009 0 : return Quadric_Create();
37010 : case TAG_MPEG4_SBBone:
37011 0 : return SBBone_Create();
37012 : case TAG_MPEG4_SBMuscle:
37013 0 : return SBMuscle_Create();
37014 : case TAG_MPEG4_SBSegment:
37015 0 : return SBSegment_Create();
37016 : case TAG_MPEG4_SBSite:
37017 0 : return SBSite_Create();
37018 : case TAG_MPEG4_SBSkinnedModel:
37019 0 : return SBSkinnedModel_Create();
37020 : case TAG_MPEG4_SBVCAnimation:
37021 0 : return SBVCAnimation_Create();
37022 : case TAG_MPEG4_ScalarAnimator:
37023 18 : return ScalarAnimator_Create();
37024 : case TAG_MPEG4_SimpleTexture:
37025 0 : return SimpleTexture_Create();
37026 : case TAG_MPEG4_SolidRep:
37027 0 : return SolidRep_Create();
37028 : case TAG_MPEG4_SubdivisionSurface:
37029 0 : return SubdivisionSurface_Create();
37030 : case TAG_MPEG4_SubdivSurfaceSector:
37031 0 : return SubdivSurfaceSector_Create();
37032 : case TAG_MPEG4_WaveletSubdivisionSurface:
37033 0 : return WaveletSubdivisionSurface_Create();
37034 : case TAG_MPEG4_Clipper2D:
37035 36 : return Clipper2D_Create();
37036 : case TAG_MPEG4_ColorTransform:
37037 99 : return ColorTransform_Create();
37038 : case TAG_MPEG4_Ellipse:
37039 36 : return Ellipse_Create();
37040 : case TAG_MPEG4_LinearGradient:
37041 110 : return LinearGradient_Create();
37042 : case TAG_MPEG4_PathLayout:
37043 36 : return PathLayout_Create();
37044 : case TAG_MPEG4_RadialGradient:
37045 144 : return RadialGradient_Create();
37046 : case TAG_MPEG4_SynthesizedTexture:
37047 0 : return SynthesizedTexture_Create();
37048 : case TAG_MPEG4_TransformMatrix2D:
37049 1966 : return TransformMatrix2D_Create();
37050 : case TAG_MPEG4_Viewport:
37051 311 : return Viewport_Create();
37052 : case TAG_MPEG4_XCurve2D:
37053 98 : return XCurve2D_Create();
37054 : case TAG_MPEG4_XFontStyle:
37055 0 : return XFontStyle_Create();
37056 : case TAG_MPEG4_XLineProperties:
37057 480 : return XLineProperties_Create();
37058 : case TAG_MPEG4_AdvancedAudioBuffer:
37059 0 : return AdvancedAudioBuffer_Create();
37060 : case TAG_MPEG4_AudioChannelConfig:
37061 0 : return AudioChannelConfig_Create();
37062 : case TAG_MPEG4_DepthImageV2:
37063 0 : return DepthImageV2_Create();
37064 : case TAG_MPEG4_MorphShape:
37065 0 : return MorphShape_Create();
37066 : case TAG_MPEG4_MultiTexture:
37067 0 : return MultiTexture_Create();
37068 : case TAG_MPEG4_PointTextureV2:
37069 0 : return PointTextureV2_Create();
37070 : case TAG_MPEG4_SBVCAnimationV2:
37071 0 : return SBVCAnimationV2_Create();
37072 : case TAG_MPEG4_SimpleTextureV2:
37073 0 : return SimpleTextureV2_Create();
37074 : case TAG_MPEG4_SurroundingSound:
37075 0 : return SurroundingSound_Create();
37076 : case TAG_MPEG4_Transform3DAudio:
37077 0 : return Transform3DAudio_Create();
37078 : case TAG_MPEG4_WideSound:
37079 0 : return WideSound_Create();
37080 : case TAG_MPEG4_ScoreShape:
37081 0 : return ScoreShape_Create();
37082 : case TAG_MPEG4_MusicScore:
37083 0 : return MusicScore_Create();
37084 : case TAG_MPEG4_FootPrintSetNode:
37085 0 : return FootPrintSetNode_Create();
37086 : case TAG_MPEG4_FootPrintNode:
37087 0 : return FootPrintNode_Create();
37088 : case TAG_MPEG4_BuildingPartNode:
37089 0 : return BuildingPartNode_Create();
37090 : case TAG_MPEG4_RoofNode:
37091 0 : return RoofNode_Create();
37092 : case TAG_MPEG4_FacadeNode:
37093 0 : return FacadeNode_Create();
37094 : case TAG_MPEG4_Shadow:
37095 0 : return Shadow_Create();
37096 : case TAG_MPEG4_CacheTexture:
37097 36 : return CacheTexture_Create();
37098 : case TAG_MPEG4_EnvironmentTest:
37099 54 : return EnvironmentTest_Create();
37100 : case TAG_MPEG4_KeyNavigator:
37101 66 : return KeyNavigator_Create();
37102 : case TAG_MPEG4_SpacePartition:
37103 0 : return SpacePartition_Create();
37104 : case TAG_MPEG4_Storage:
37105 18 : return Storage_Create();
37106 : default:
37107 0 : return NULL;
37108 : }
37109 202445 : }
37110 :
37111 : const char *gf_sg_mpeg4_node_get_class_name(u32 NodeTag)
37112 : {
37113 110710 : switch (NodeTag) {
37114 : case TAG_MPEG4_Anchor:
37115 32 : return "Anchor";
37116 : case TAG_MPEG4_AnimationStream:
37117 58 : return "AnimationStream";
37118 : case TAG_MPEG4_Appearance:
37119 6266 : return "Appearance";
37120 : case TAG_MPEG4_AudioBuffer:
37121 7 : return "AudioBuffer";
37122 : case TAG_MPEG4_AudioClip:
37123 35 : return "AudioClip";
37124 : case TAG_MPEG4_AudioDelay:
37125 0 : return "AudioDelay";
37126 : case TAG_MPEG4_AudioFX:
37127 0 : return "AudioFX";
37128 : case TAG_MPEG4_AudioMix:
37129 0 : return "AudioMix";
37130 : case TAG_MPEG4_AudioSource:
37131 46 : return "AudioSource";
37132 : case TAG_MPEG4_AudioSwitch:
37133 0 : return "AudioSwitch";
37134 : case TAG_MPEG4_Background:
37135 26 : return "Background";
37136 : case TAG_MPEG4_Background2D:
37137 2018 : return "Background2D";
37138 : case TAG_MPEG4_Billboard:
37139 21 : return "Billboard";
37140 : case TAG_MPEG4_Bitmap:
37141 194 : return "Bitmap";
37142 : case TAG_MPEG4_Box:
37143 284 : return "Box";
37144 : case TAG_MPEG4_Circle:
37145 713 : return "Circle";
37146 : case TAG_MPEG4_Collision:
37147 14 : return "Collision";
37148 : case TAG_MPEG4_Color:
37149 51 : return "Color";
37150 : case TAG_MPEG4_ColorInterpolator:
37151 43 : return "ColorInterpolator";
37152 : case TAG_MPEG4_CompositeTexture2D:
37153 32 : return "CompositeTexture2D";
37154 : case TAG_MPEG4_CompositeTexture3D:
37155 14 : return "CompositeTexture3D";
37156 : case TAG_MPEG4_Conditional:
37157 1972 : return "Conditional";
37158 : case TAG_MPEG4_Cone:
37159 33 : return "Cone";
37160 : case TAG_MPEG4_Coordinate:
37161 36 : return "Coordinate";
37162 : case TAG_MPEG4_Coordinate2D:
37163 889 : return "Coordinate2D";
37164 : case TAG_MPEG4_CoordinateInterpolator:
37165 0 : return "CoordinateInterpolator";
37166 : case TAG_MPEG4_CoordinateInterpolator2D:
37167 14 : return "CoordinateInterpolator2D";
37168 : case TAG_MPEG4_Curve2D:
37169 228 : return "Curve2D";
37170 : case TAG_MPEG4_Cylinder:
37171 69 : return "Cylinder";
37172 : case TAG_MPEG4_CylinderSensor:
37173 7 : return "CylinderSensor";
37174 : case TAG_MPEG4_DirectionalLight:
37175 35 : return "DirectionalLight";
37176 : case TAG_MPEG4_DiscSensor:
37177 18 : return "DiscSensor";
37178 : case TAG_MPEG4_ElevationGrid:
37179 7 : return "ElevationGrid";
37180 : case TAG_MPEG4_Expression:
37181 0 : return "Expression";
37182 : case TAG_MPEG4_Extrusion:
37183 7 : return "Extrusion";
37184 : case TAG_MPEG4_Face:
37185 0 : return "Face";
37186 : case TAG_MPEG4_FaceDefMesh:
37187 0 : return "FaceDefMesh";
37188 : case TAG_MPEG4_FaceDefTables:
37189 0 : return "FaceDefTables";
37190 : case TAG_MPEG4_FaceDefTransform:
37191 0 : return "FaceDefTransform";
37192 : case TAG_MPEG4_FAP:
37193 0 : return "FAP";
37194 : case TAG_MPEG4_FDP:
37195 0 : return "FDP";
37196 : case TAG_MPEG4_FIT:
37197 0 : return "FIT";
37198 : case TAG_MPEG4_Fog:
37199 7 : return "Fog";
37200 : case TAG_MPEG4_FontStyle:
37201 3076 : return "FontStyle";
37202 : case TAG_MPEG4_Form:
37203 96 : return "Form";
37204 : case TAG_MPEG4_Group:
37205 495 : return "Group";
37206 : case TAG_MPEG4_ImageTexture:
37207 348 : return "ImageTexture";
37208 : case TAG_MPEG4_IndexedFaceSet:
37209 18 : return "IndexedFaceSet";
37210 : case TAG_MPEG4_IndexedFaceSet2D:
37211 480 : return "IndexedFaceSet2D";
37212 : case TAG_MPEG4_IndexedLineSet:
37213 11 : return "IndexedLineSet";
37214 : case TAG_MPEG4_IndexedLineSet2D:
37215 218 : return "IndexedLineSet2D";
37216 : case TAG_MPEG4_Inline:
37217 93 : return "Inline";
37218 : case TAG_MPEG4_LOD:
37219 7 : return "LOD";
37220 : case TAG_MPEG4_Layer2D:
37221 92 : return "Layer2D";
37222 : case TAG_MPEG4_Layer3D:
37223 27 : return "Layer3D";
37224 : case TAG_MPEG4_Layout:
37225 614 : return "Layout";
37226 : case TAG_MPEG4_LineProperties:
37227 247 : return "LineProperties";
37228 : case TAG_MPEG4_ListeningPoint:
37229 0 : return "ListeningPoint";
37230 : case TAG_MPEG4_Material:
37231 420 : return "Material";
37232 : case TAG_MPEG4_Material2D:
37233 2964 : return "Material2D";
37234 : case TAG_MPEG4_MovieTexture:
37235 183 : return "MovieTexture";
37236 : case TAG_MPEG4_NavigationInfo:
37237 94 : return "NavigationInfo";
37238 : case TAG_MPEG4_Normal:
37239 0 : return "Normal";
37240 : case TAG_MPEG4_NormalInterpolator:
37241 0 : return "NormalInterpolator";
37242 : case TAG_MPEG4_OrderedGroup:
37243 1796 : return "OrderedGroup";
37244 : case TAG_MPEG4_OrientationInterpolator:
37245 110 : return "OrientationInterpolator";
37246 : case TAG_MPEG4_PixelTexture:
37247 19 : return "PixelTexture";
37248 : case TAG_MPEG4_PlaneSensor:
37249 7 : return "PlaneSensor";
37250 : case TAG_MPEG4_PlaneSensor2D:
37251 93 : return "PlaneSensor2D";
37252 : case TAG_MPEG4_PointLight:
37253 7 : return "PointLight";
37254 : case TAG_MPEG4_PointSet:
37255 7 : return "PointSet";
37256 : case TAG_MPEG4_PointSet2D:
37257 35 : return "PointSet2D";
37258 : case TAG_MPEG4_PositionInterpolator:
37259 74 : return "PositionInterpolator";
37260 : case TAG_MPEG4_PositionInterpolator2D:
37261 212 : return "PositionInterpolator2D";
37262 : case TAG_MPEG4_ProximitySensor2D:
37263 11 : return "ProximitySensor2D";
37264 : case TAG_MPEG4_ProximitySensor:
37265 7 : return "ProximitySensor";
37266 : case TAG_MPEG4_QuantizationParameter:
37267 41 : return "QuantizationParameter";
37268 : case TAG_MPEG4_Rectangle:
37269 1702 : return "Rectangle";
37270 : case TAG_MPEG4_ScalarInterpolator:
37271 272 : return "ScalarInterpolator";
37272 : case TAG_MPEG4_Script:
37273 201 : return "Script";
37274 : case TAG_MPEG4_Shape:
37275 9536 : return "Shape";
37276 : case TAG_MPEG4_Sound:
37277 14 : return "Sound";
37278 : case TAG_MPEG4_Sound2D:
37279 71 : return "Sound2D";
37280 : case TAG_MPEG4_Sphere:
37281 77 : return "Sphere";
37282 : case TAG_MPEG4_SphereSensor:
37283 7 : return "SphereSensor";
37284 : case TAG_MPEG4_SpotLight:
37285 7 : return "SpotLight";
37286 : case TAG_MPEG4_Switch:
37287 173 : return "Switch";
37288 : case TAG_MPEG4_TermCap:
37289 0 : return "TermCap";
37290 : case TAG_MPEG4_Text:
37291 3180 : return "Text";
37292 : case TAG_MPEG4_TextureCoordinate:
37293 0 : return "TextureCoordinate";
37294 : case TAG_MPEG4_TextureTransform:
37295 73 : return "TextureTransform";
37296 : case TAG_MPEG4_TimeSensor:
37297 701 : return "TimeSensor";
37298 : case TAG_MPEG4_TouchSensor:
37299 1449 : return "TouchSensor";
37300 : case TAG_MPEG4_Transform:
37301 764 : return "Transform";
37302 : case TAG_MPEG4_Transform2D:
37303 7474 : return "Transform2D";
37304 : case TAG_MPEG4_Valuator:
37305 1371 : return "Valuator";
37306 : case TAG_MPEG4_Viewpoint:
37307 214 : return "Viewpoint";
37308 : case TAG_MPEG4_VisibilitySensor:
37309 7 : return "VisibilitySensor";
37310 : case TAG_MPEG4_Viseme:
37311 0 : return "Viseme";
37312 : case TAG_MPEG4_WorldInfo:
37313 2117 : return "WorldInfo";
37314 : case TAG_MPEG4_AcousticMaterial:
37315 0 : return "AcousticMaterial";
37316 : case TAG_MPEG4_AcousticScene:
37317 0 : return "AcousticScene";
37318 : case TAG_MPEG4_ApplicationWindow:
37319 0 : return "ApplicationWindow";
37320 : case TAG_MPEG4_BAP:
37321 0 : return "BAP";
37322 : case TAG_MPEG4_BDP:
37323 0 : return "BDP";
37324 : case TAG_MPEG4_Body:
37325 0 : return "Body";
37326 : case TAG_MPEG4_BodyDefTable:
37327 0 : return "BodyDefTable";
37328 : case TAG_MPEG4_BodySegmentConnectionHint:
37329 0 : return "BodySegmentConnectionHint";
37330 : case TAG_MPEG4_DirectiveSound:
37331 0 : return "DirectiveSound";
37332 : case TAG_MPEG4_Hierarchical3DMesh:
37333 0 : return "Hierarchical3DMesh";
37334 : case TAG_MPEG4_MaterialKey:
37335 7 : return "MaterialKey";
37336 : case TAG_MPEG4_PerceptualParameters:
37337 0 : return "PerceptualParameters";
37338 : case TAG_MPEG4_TemporalTransform:
37339 0 : return "TemporalTransform";
37340 : case TAG_MPEG4_TemporalGroup:
37341 0 : return "TemporalGroup";
37342 : case TAG_MPEG4_ServerCommand:
37343 0 : return "ServerCommand";
37344 : case TAG_MPEG4_InputSensor:
37345 21 : return "InputSensor";
37346 : case TAG_MPEG4_MatteTexture:
37347 0 : return "MatteTexture";
37348 : case TAG_MPEG4_MediaBuffer:
37349 0 : return "MediaBuffer";
37350 : case TAG_MPEG4_MediaControl:
37351 115 : return "MediaControl";
37352 : case TAG_MPEG4_MediaSensor:
37353 92 : return "MediaSensor";
37354 : case TAG_MPEG4_BitWrapper:
37355 0 : return "BitWrapper";
37356 : case TAG_MPEG4_CoordinateInterpolator4D:
37357 0 : return "CoordinateInterpolator4D";
37358 : case TAG_MPEG4_DepthImage:
37359 0 : return "DepthImage";
37360 : case TAG_MPEG4_FFD:
37361 0 : return "FFD";
37362 : case TAG_MPEG4_Implicit:
37363 0 : return "Implicit";
37364 : case TAG_MPEG4_XXLFM_Appearance:
37365 0 : return "XXLFM_Appearance";
37366 : case TAG_MPEG4_XXLFM_BlendList:
37367 0 : return "XXLFM_BlendList";
37368 : case TAG_MPEG4_XXLFM_FrameList:
37369 0 : return "XXLFM_FrameList";
37370 : case TAG_MPEG4_XXLFM_LightMap:
37371 0 : return "XXLFM_LightMap";
37372 : case TAG_MPEG4_XXLFM_SurfaceMapList:
37373 0 : return "XXLFM_SurfaceMapList";
37374 : case TAG_MPEG4_XXLFM_ViewMapList:
37375 0 : return "XXLFM_ViewMapList";
37376 : case TAG_MPEG4_MeshGrid:
37377 0 : return "MeshGrid";
37378 : case TAG_MPEG4_NonLinearDeformer:
37379 11 : return "NonLinearDeformer";
37380 : case TAG_MPEG4_NurbsCurve:
37381 0 : return "NurbsCurve";
37382 : case TAG_MPEG4_NurbsCurve2D:
37383 0 : return "NurbsCurve2D";
37384 : case TAG_MPEG4_NurbsSurface:
37385 0 : return "NurbsSurface";
37386 : case TAG_MPEG4_OctreeImage:
37387 0 : return "OctreeImage";
37388 : case TAG_MPEG4_XXParticles:
37389 0 : return "XXParticles";
37390 : case TAG_MPEG4_XXParticleInitBox:
37391 0 : return "XXParticleInitBox";
37392 : case TAG_MPEG4_XXPlanarObstacle:
37393 0 : return "XXPlanarObstacle";
37394 : case TAG_MPEG4_XXPointAttractor:
37395 0 : return "XXPointAttractor";
37396 : case TAG_MPEG4_PointTexture:
37397 0 : return "PointTexture";
37398 : case TAG_MPEG4_PositionAnimator:
37399 7 : return "PositionAnimator";
37400 : case TAG_MPEG4_PositionAnimator2D:
37401 7 : return "PositionAnimator2D";
37402 : case TAG_MPEG4_PositionInterpolator4D:
37403 0 : return "PositionInterpolator4D";
37404 : case TAG_MPEG4_ProceduralTexture:
37405 0 : return "ProceduralTexture";
37406 : case TAG_MPEG4_Quadric:
37407 0 : return "Quadric";
37408 : case TAG_MPEG4_SBBone:
37409 0 : return "SBBone";
37410 : case TAG_MPEG4_SBMuscle:
37411 0 : return "SBMuscle";
37412 : case TAG_MPEG4_SBSegment:
37413 0 : return "SBSegment";
37414 : case TAG_MPEG4_SBSite:
37415 0 : return "SBSite";
37416 : case TAG_MPEG4_SBSkinnedModel:
37417 0 : return "SBSkinnedModel";
37418 : case TAG_MPEG4_SBVCAnimation:
37419 0 : return "SBVCAnimation";
37420 : case TAG_MPEG4_ScalarAnimator:
37421 7 : return "ScalarAnimator";
37422 : case TAG_MPEG4_SimpleTexture:
37423 0 : return "SimpleTexture";
37424 : case TAG_MPEG4_SolidRep:
37425 0 : return "SolidRep";
37426 : case TAG_MPEG4_SubdivisionSurface:
37427 0 : return "SubdivisionSurface";
37428 : case TAG_MPEG4_SubdivSurfaceSector:
37429 0 : return "SubdivSurfaceSector";
37430 : case TAG_MPEG4_WaveletSubdivisionSurface:
37431 0 : return "WaveletSubdivisionSurface";
37432 : case TAG_MPEG4_Clipper2D:
37433 11 : return "Clipper2D";
37434 : case TAG_MPEG4_ColorTransform:
37435 36 : return "ColorTransform";
37436 : case TAG_MPEG4_Ellipse:
37437 14 : return "Ellipse";
37438 : case TAG_MPEG4_LinearGradient:
37439 44 : return "LinearGradient";
37440 : case TAG_MPEG4_PathLayout:
37441 14 : return "PathLayout";
37442 : case TAG_MPEG4_RadialGradient:
37443 50 : return "RadialGradient";
37444 : case TAG_MPEG4_SynthesizedTexture:
37445 0 : return "SynthesizedTexture";
37446 : case TAG_MPEG4_TransformMatrix2D:
37447 88 : return "TransformMatrix2D";
37448 : case TAG_MPEG4_Viewport:
37449 84 : return "Viewport";
37450 : case TAG_MPEG4_XCurve2D:
37451 25 : return "XCurve2D";
37452 : case TAG_MPEG4_XFontStyle:
37453 0 : return "XFontStyle";
37454 : case TAG_MPEG4_XLineProperties:
37455 146 : return "XLineProperties";
37456 : case TAG_MPEG4_AdvancedAudioBuffer:
37457 0 : return "AdvancedAudioBuffer";
37458 : case TAG_MPEG4_AudioChannelConfig:
37459 0 : return "AudioChannelConfig";
37460 : case TAG_MPEG4_DepthImageV2:
37461 0 : return "DepthImageV2";
37462 : case TAG_MPEG4_MorphShape:
37463 0 : return "MorphShape";
37464 : case TAG_MPEG4_MultiTexture:
37465 0 : return "MultiTexture";
37466 : case TAG_MPEG4_PointTextureV2:
37467 0 : return "PointTextureV2";
37468 : case TAG_MPEG4_SBVCAnimationV2:
37469 0 : return "SBVCAnimationV2";
37470 : case TAG_MPEG4_SimpleTextureV2:
37471 0 : return "SimpleTextureV2";
37472 : case TAG_MPEG4_SurroundingSound:
37473 0 : return "SurroundingSound";
37474 : case TAG_MPEG4_Transform3DAudio:
37475 0 : return "Transform3DAudio";
37476 : case TAG_MPEG4_WideSound:
37477 0 : return "WideSound";
37478 : case TAG_MPEG4_ScoreShape:
37479 0 : return "ScoreShape";
37480 : case TAG_MPEG4_MusicScore:
37481 0 : return "MusicScore";
37482 : case TAG_MPEG4_FootPrintSetNode:
37483 0 : return "FootPrintSetNode";
37484 : case TAG_MPEG4_FootPrintNode:
37485 0 : return "FootPrintNode";
37486 : case TAG_MPEG4_BuildingPartNode:
37487 0 : return "BuildingPartNode";
37488 : case TAG_MPEG4_RoofNode:
37489 0 : return "RoofNode";
37490 : case TAG_MPEG4_FacadeNode:
37491 0 : return "FacadeNode";
37492 : case TAG_MPEG4_Shadow:
37493 0 : return "Shadow";
37494 : case TAG_MPEG4_CacheTexture:
37495 14 : return "CacheTexture";
37496 : case TAG_MPEG4_EnvironmentTest:
37497 15 : return "EnvironmentTest";
37498 : case TAG_MPEG4_KeyNavigator:
37499 52 : return "KeyNavigator";
37500 : case TAG_MPEG4_SpacePartition:
37501 0 : return "SpacePartition";
37502 : case TAG_MPEG4_Storage:
37503 7 : return "Storage";
37504 : default:
37505 0 : return "Unknown Node";
37506 : }
37507 55355 : }
37508 :
37509 : void gf_sg_mpeg4_node_del(GF_Node *node)
37510 : {
37511 607335 : switch (node->sgprivate->tag) {
37512 : case TAG_MPEG4_Anchor:
37513 92 : Anchor_Del(node);
37514 92 : return;
37515 : case TAG_MPEG4_AnimationStream:
37516 126 : AnimationStream_Del(node);
37517 126 : return;
37518 : case TAG_MPEG4_Appearance:
37519 21658 : Appearance_Del(node);
37520 21658 : return;
37521 : case TAG_MPEG4_AudioBuffer:
37522 18 : AudioBuffer_Del(node);
37523 18 : return;
37524 : case TAG_MPEG4_AudioClip:
37525 90 : AudioClip_Del(node);
37526 90 : return;
37527 : case TAG_MPEG4_AudioDelay:
37528 0 : AudioDelay_Del(node);
37529 0 : return;
37530 : case TAG_MPEG4_AudioFX:
37531 0 : AudioFX_Del(node);
37532 0 : return;
37533 : case TAG_MPEG4_AudioMix:
37534 0 : AudioMix_Del(node);
37535 0 : return;
37536 : case TAG_MPEG4_AudioSource:
37537 125 : AudioSource_Del(node);
37538 125 : return;
37539 : case TAG_MPEG4_AudioSwitch:
37540 0 : AudioSwitch_Del(node);
37541 0 : return;
37542 : case TAG_MPEG4_Background:
37543 61 : Background_Del(node);
37544 61 : return;
37545 : case TAG_MPEG4_Background2D:
37546 5232 : Background2D_Del(node);
37547 5232 : return;
37548 : case TAG_MPEG4_Billboard:
37549 54 : Billboard_Del(node);
37550 54 : return;
37551 : case TAG_MPEG4_Bitmap:
37552 578 : Bitmap_Del(node);
37553 578 : return;
37554 : case TAG_MPEG4_Box:
37555 928 : Box_Del(node);
37556 928 : return;
37557 : case TAG_MPEG4_Circle:
37558 2964 : Circle_Del(node);
37559 2964 : return;
37560 : case TAG_MPEG4_Collision:
37561 36 : Collision_Del(node);
37562 36 : return;
37563 : case TAG_MPEG4_Color:
37564 152 : Color_Del(node);
37565 152 : return;
37566 : case TAG_MPEG4_ColorInterpolator:
37567 108 : ColorInterpolator_Del(node);
37568 108 : return;
37569 : case TAG_MPEG4_CompositeTexture2D:
37570 82 : CompositeTexture2D_Del(node);
37571 82 : return;
37572 : case TAG_MPEG4_CompositeTexture3D:
37573 36 : CompositeTexture3D_Del(node);
37574 36 : return;
37575 : case TAG_MPEG4_Conditional:
37576 8859 : Conditional_Del(node);
37577 8859 : return;
37578 : case TAG_MPEG4_Cone:
37579 108 : Cone_Del(node);
37580 108 : return;
37581 : case TAG_MPEG4_Coordinate:
37582 85 : Coordinate_Del(node);
37583 85 : return;
37584 : case TAG_MPEG4_Coordinate2D:
37585 4134 : Coordinate2D_Del(node);
37586 4134 : return;
37587 : case TAG_MPEG4_CoordinateInterpolator:
37588 0 : CoordinateInterpolator_Del(node);
37589 0 : return;
37590 : case TAG_MPEG4_CoordinateInterpolator2D:
37591 36 : CoordinateInterpolator2D_Del(node);
37592 36 : return;
37593 : case TAG_MPEG4_Curve2D:
37594 1740 : Curve2D_Del(node);
37595 1740 : return;
37596 : case TAG_MPEG4_Cylinder:
37597 270 : Cylinder_Del(node);
37598 270 : return;
37599 : case TAG_MPEG4_CylinderSensor:
37600 18 : CylinderSensor_Del(node);
37601 18 : return;
37602 : case TAG_MPEG4_DirectionalLight:
37603 90 : DirectionalLight_Del(node);
37604 90 : return;
37605 : case TAG_MPEG4_DiscSensor:
37606 54 : DiscSensor_Del(node);
37607 54 : return;
37608 : case TAG_MPEG4_ElevationGrid:
37609 18 : ElevationGrid_Del(node);
37610 18 : return;
37611 : case TAG_MPEG4_Expression:
37612 0 : Expression_Del(node);
37613 0 : return;
37614 : case TAG_MPEG4_Extrusion:
37615 18 : Extrusion_Del(node);
37616 18 : return;
37617 : case TAG_MPEG4_Face:
37618 0 : Face_Del(node);
37619 0 : return;
37620 : case TAG_MPEG4_FaceDefMesh:
37621 0 : FaceDefMesh_Del(node);
37622 0 : return;
37623 : case TAG_MPEG4_FaceDefTables:
37624 0 : FaceDefTables_Del(node);
37625 0 : return;
37626 : case TAG_MPEG4_FaceDefTransform:
37627 0 : FaceDefTransform_Del(node);
37628 0 : return;
37629 : case TAG_MPEG4_FAP:
37630 0 : FAP_Del(node);
37631 0 : return;
37632 : case TAG_MPEG4_FDP:
37633 0 : FDP_Del(node);
37634 0 : return;
37635 : case TAG_MPEG4_FIT:
37636 0 : FIT_Del(node);
37637 0 : return;
37638 : case TAG_MPEG4_Fog:
37639 18 : Fog_Del(node);
37640 18 : return;
37641 : case TAG_MPEG4_FontStyle:
37642 7836 : FontStyle_Del(node);
37643 7836 : return;
37644 : case TAG_MPEG4_Form:
37645 285 : Form_Del(node);
37646 285 : return;
37647 : case TAG_MPEG4_Group:
37648 1434 : Group_Del(node);
37649 1434 : return;
37650 : case TAG_MPEG4_ImageTexture:
37651 1000 : ImageTexture_Del(node);
37652 1000 : return;
37653 : case TAG_MPEG4_IndexedFaceSet:
37654 57 : IndexedFaceSet_Del(node);
37655 57 : return;
37656 : case TAG_MPEG4_IndexedFaceSet2D:
37657 1529 : IndexedFaceSet2D_Del(node);
37658 1529 : return;
37659 : case TAG_MPEG4_IndexedLineSet:
37660 36 : IndexedLineSet_Del(node);
37661 36 : return;
37662 : case TAG_MPEG4_IndexedLineSet2D:
37663 835 : IndexedLineSet2D_Del(node);
37664 835 : return;
37665 : case TAG_MPEG4_Inline:
37666 256 : Inline_Del(node);
37667 256 : return;
37668 : case TAG_MPEG4_LOD:
37669 18 : LOD_Del(node);
37670 18 : return;
37671 : case TAG_MPEG4_Layer2D:
37672 367 : Layer2D_Del(node);
37673 367 : return;
37674 : case TAG_MPEG4_Layer3D:
37675 92 : Layer3D_Del(node);
37676 92 : return;
37677 : case TAG_MPEG4_Layout:
37678 2520 : Layout_Del(node);
37679 2520 : return;
37680 : case TAG_MPEG4_LineProperties:
37681 1348 : LineProperties_Del(node);
37682 1348 : return;
37683 : case TAG_MPEG4_ListeningPoint:
37684 0 : ListeningPoint_Del(node);
37685 0 : return;
37686 : case TAG_MPEG4_Material:
37687 1419 : Material_Del(node);
37688 1419 : return;
37689 : case TAG_MPEG4_Material2D:
37690 17374 : Material2D_Del(node);
37691 17374 : return;
37692 : case TAG_MPEG4_MovieTexture:
37693 552 : MovieTexture_Del(node);
37694 552 : return;
37695 : case TAG_MPEG4_NavigationInfo:
37696 260 : NavigationInfo_Del(node);
37697 260 : return;
37698 : case TAG_MPEG4_Normal:
37699 0 : Normal_Del(node);
37700 0 : return;
37701 : case TAG_MPEG4_NormalInterpolator:
37702 0 : NormalInterpolator_Del(node);
37703 0 : return;
37704 : case TAG_MPEG4_OrderedGroup:
37705 4754 : OrderedGroup_Del(node);
37706 4754 : return;
37707 : case TAG_MPEG4_OrientationInterpolator:
37708 289 : OrientationInterpolator_Del(node);
37709 289 : return;
37710 : case TAG_MPEG4_PixelTexture:
37711 72 : PixelTexture_Del(node);
37712 72 : return;
37713 : case TAG_MPEG4_PlaneSensor:
37714 18 : PlaneSensor_Del(node);
37715 18 : return;
37716 : case TAG_MPEG4_PlaneSensor2D:
37717 279 : PlaneSensor2D_Del(node);
37718 279 : return;
37719 : case TAG_MPEG4_PointLight:
37720 18 : PointLight_Del(node);
37721 18 : return;
37722 : case TAG_MPEG4_PointSet:
37723 18 : PointSet_Del(node);
37724 18 : return;
37725 : case TAG_MPEG4_PointSet2D:
37726 92 : PointSet2D_Del(node);
37727 92 : return;
37728 : case TAG_MPEG4_PositionInterpolator:
37729 198 : PositionInterpolator_Del(node);
37730 198 : return;
37731 : case TAG_MPEG4_PositionInterpolator2D:
37732 610 : PositionInterpolator2D_Del(node);
37733 610 : return;
37734 : case TAG_MPEG4_ProximitySensor2D:
37735 36 : ProximitySensor2D_Del(node);
37736 36 : return;
37737 : case TAG_MPEG4_ProximitySensor:
37738 18 : ProximitySensor_Del(node);
37739 18 : return;
37740 : case TAG_MPEG4_QuantizationParameter:
37741 123 : QuantizationParameter_Del(node);
37742 123 : return;
37743 : case TAG_MPEG4_Rectangle:
37744 7135 : Rectangle_Del(node);
37745 7135 : return;
37746 : case TAG_MPEG4_ScalarInterpolator:
37747 759 : ScalarInterpolator_Del(node);
37748 759 : return;
37749 : case TAG_MPEG4_Script:
37750 409 : Script_Del(node);
37751 409 : return;
37752 : case TAG_MPEG4_Shape:
37753 32371 : Shape_Del(node);
37754 32371 : return;
37755 : case TAG_MPEG4_Sound:
37756 36 : Sound_Del(node);
37757 36 : return;
37758 : case TAG_MPEG4_Sound2D:
37759 181 : Sound2D_Del(node);
37760 181 : return;
37761 : case TAG_MPEG4_Sphere:
37762 198 : Sphere_Del(node);
37763 198 : return;
37764 : case TAG_MPEG4_SphereSensor:
37765 18 : SphereSensor_Del(node);
37766 18 : return;
37767 : case TAG_MPEG4_SpotLight:
37768 18 : SpotLight_Del(node);
37769 18 : return;
37770 : case TAG_MPEG4_Switch:
37771 544 : Switch_Del(node);
37772 544 : return;
37773 : case TAG_MPEG4_TermCap:
37774 0 : TermCap_Del(node);
37775 0 : return;
37776 : case TAG_MPEG4_Text:
37777 12892 : Text_Del(node);
37778 12892 : return;
37779 : case TAG_MPEG4_TextureCoordinate:
37780 0 : TextureCoordinate_Del(node);
37781 0 : return;
37782 : case TAG_MPEG4_TextureTransform:
37783 234 : TextureTransform_Del(node);
37784 234 : return;
37785 : case TAG_MPEG4_TimeSensor:
37786 1867 : TimeSensor_Del(node);
37787 1867 : return;
37788 : case TAG_MPEG4_TouchSensor:
37789 5957 : TouchSensor_Del(node);
37790 5957 : return;
37791 : case TAG_MPEG4_Transform:
37792 2471 : Transform_Del(node);
37793 2471 : return;
37794 : case TAG_MPEG4_Transform2D:
37795 29181 : Transform2D_Del(node);
37796 29181 : return;
37797 : case TAG_MPEG4_Valuator:
37798 6528 : Valuator_Del(node);
37799 6528 : return;
37800 : case TAG_MPEG4_Viewpoint:
37801 595 : Viewpoint_Del(node);
37802 595 : return;
37803 : case TAG_MPEG4_VisibilitySensor:
37804 18 : VisibilitySensor_Del(node);
37805 18 : return;
37806 : case TAG_MPEG4_Viseme:
37807 0 : Viseme_Del(node);
37808 0 : return;
37809 : case TAG_MPEG4_WorldInfo:
37810 5346 : WorldInfo_Del(node);
37811 5346 : return;
37812 : case TAG_MPEG4_AcousticMaterial:
37813 0 : AcousticMaterial_Del(node);
37814 0 : return;
37815 : case TAG_MPEG4_AcousticScene:
37816 0 : AcousticScene_Del(node);
37817 0 : return;
37818 : case TAG_MPEG4_ApplicationWindow:
37819 0 : ApplicationWindow_Del(node);
37820 0 : return;
37821 : case TAG_MPEG4_BAP:
37822 0 : BAP_Del(node);
37823 0 : return;
37824 : case TAG_MPEG4_BDP:
37825 0 : BDP_Del(node);
37826 0 : return;
37827 : case TAG_MPEG4_Body:
37828 0 : Body_Del(node);
37829 0 : return;
37830 : case TAG_MPEG4_BodyDefTable:
37831 0 : BodyDefTable_Del(node);
37832 0 : return;
37833 : case TAG_MPEG4_BodySegmentConnectionHint:
37834 0 : BodySegmentConnectionHint_Del(node);
37835 0 : return;
37836 : case TAG_MPEG4_DirectiveSound:
37837 0 : DirectiveSound_Del(node);
37838 0 : return;
37839 : case TAG_MPEG4_Hierarchical3DMesh:
37840 0 : Hierarchical3DMesh_Del(node);
37841 0 : return;
37842 : case TAG_MPEG4_MaterialKey:
37843 18 : MaterialKey_Del(node);
37844 18 : return;
37845 : case TAG_MPEG4_PerceptualParameters:
37846 0 : PerceptualParameters_Del(node);
37847 0 : return;
37848 : case TAG_MPEG4_TemporalTransform:
37849 0 : TemporalTransform_Del(node);
37850 0 : return;
37851 : case TAG_MPEG4_TemporalGroup:
37852 0 : TemporalGroup_Del(node);
37853 0 : return;
37854 : case TAG_MPEG4_ServerCommand:
37855 0 : ServerCommand_Del(node);
37856 0 : return;
37857 : case TAG_MPEG4_InputSensor:
37858 54 : InputSensor_Del(node);
37859 54 : return;
37860 : case TAG_MPEG4_MatteTexture:
37861 0 : MatteTexture_Del(node);
37862 0 : return;
37863 : case TAG_MPEG4_MediaBuffer:
37864 0 : MediaBuffer_Del(node);
37865 0 : return;
37866 : case TAG_MPEG4_MediaControl:
37867 277 : MediaControl_Del(node);
37868 277 : return;
37869 : case TAG_MPEG4_MediaSensor:
37870 240 : MediaSensor_Del(node);
37871 240 : return;
37872 : case TAG_MPEG4_BitWrapper:
37873 0 : BitWrapper_Del(node);
37874 0 : return;
37875 : case TAG_MPEG4_CoordinateInterpolator4D:
37876 0 : CoordinateInterpolator4D_Del(node);
37877 0 : return;
37878 : case TAG_MPEG4_DepthImage:
37879 0 : DepthImage_Del(node);
37880 0 : return;
37881 : case TAG_MPEG4_FFD:
37882 0 : FFD_Del(node);
37883 0 : return;
37884 : case TAG_MPEG4_Implicit:
37885 0 : Implicit_Del(node);
37886 0 : return;
37887 : case TAG_MPEG4_XXLFM_Appearance:
37888 0 : XXLFM_Appearance_Del(node);
37889 0 : return;
37890 : case TAG_MPEG4_XXLFM_BlendList:
37891 0 : XXLFM_BlendList_Del(node);
37892 0 : return;
37893 : case TAG_MPEG4_XXLFM_FrameList:
37894 0 : XXLFM_FrameList_Del(node);
37895 0 : return;
37896 : case TAG_MPEG4_XXLFM_LightMap:
37897 0 : XXLFM_LightMap_Del(node);
37898 0 : return;
37899 : case TAG_MPEG4_XXLFM_SurfaceMapList:
37900 0 : XXLFM_SurfaceMapList_Del(node);
37901 0 : return;
37902 : case TAG_MPEG4_XXLFM_ViewMapList:
37903 0 : XXLFM_ViewMapList_Del(node);
37904 0 : return;
37905 : case TAG_MPEG4_MeshGrid:
37906 0 : MeshGrid_Del(node);
37907 0 : return;
37908 : case TAG_MPEG4_NonLinearDeformer:
37909 23 : NonLinearDeformer_Del(node);
37910 23 : return;
37911 : case TAG_MPEG4_NurbsCurve:
37912 0 : NurbsCurve_Del(node);
37913 0 : return;
37914 : case TAG_MPEG4_NurbsCurve2D:
37915 0 : NurbsCurve2D_Del(node);
37916 0 : return;
37917 : case TAG_MPEG4_NurbsSurface:
37918 0 : NurbsSurface_Del(node);
37919 0 : return;
37920 : case TAG_MPEG4_OctreeImage:
37921 0 : OctreeImage_Del(node);
37922 0 : return;
37923 : case TAG_MPEG4_XXParticles:
37924 0 : XXParticles_Del(node);
37925 0 : return;
37926 : case TAG_MPEG4_XXParticleInitBox:
37927 0 : XXParticleInitBox_Del(node);
37928 0 : return;
37929 : case TAG_MPEG4_XXPlanarObstacle:
37930 0 : XXPlanarObstacle_Del(node);
37931 0 : return;
37932 : case TAG_MPEG4_XXPointAttractor:
37933 0 : XXPointAttractor_Del(node);
37934 0 : return;
37935 : case TAG_MPEG4_PointTexture:
37936 0 : PointTexture_Del(node);
37937 0 : return;
37938 : case TAG_MPEG4_PositionAnimator:
37939 18 : PositionAnimator_Del(node);
37940 18 : return;
37941 : case TAG_MPEG4_PositionAnimator2D:
37942 18 : PositionAnimator2D_Del(node);
37943 18 : return;
37944 : case TAG_MPEG4_PositionInterpolator4D:
37945 0 : PositionInterpolator4D_Del(node);
37946 0 : return;
37947 : case TAG_MPEG4_ProceduralTexture:
37948 0 : ProceduralTexture_Del(node);
37949 0 : return;
37950 : case TAG_MPEG4_Quadric:
37951 0 : Quadric_Del(node);
37952 0 : return;
37953 : case TAG_MPEG4_SBBone:
37954 0 : SBBone_Del(node);
37955 0 : return;
37956 : case TAG_MPEG4_SBMuscle:
37957 0 : SBMuscle_Del(node);
37958 0 : return;
37959 : case TAG_MPEG4_SBSegment:
37960 0 : SBSegment_Del(node);
37961 0 : return;
37962 : case TAG_MPEG4_SBSite:
37963 0 : SBSite_Del(node);
37964 0 : return;
37965 : case TAG_MPEG4_SBSkinnedModel:
37966 0 : SBSkinnedModel_Del(node);
37967 0 : return;
37968 : case TAG_MPEG4_SBVCAnimation:
37969 0 : SBVCAnimation_Del(node);
37970 0 : return;
37971 : case TAG_MPEG4_ScalarAnimator:
37972 18 : ScalarAnimator_Del(node);
37973 18 : return;
37974 : case TAG_MPEG4_SimpleTexture:
37975 0 : SimpleTexture_Del(node);
37976 0 : return;
37977 : case TAG_MPEG4_SolidRep:
37978 0 : SolidRep_Del(node);
37979 0 : return;
37980 : case TAG_MPEG4_SubdivisionSurface:
37981 0 : SubdivisionSurface_Del(node);
37982 0 : return;
37983 : case TAG_MPEG4_SubdivSurfaceSector:
37984 0 : SubdivSurfaceSector_Del(node);
37985 0 : return;
37986 : case TAG_MPEG4_WaveletSubdivisionSurface:
37987 0 : WaveletSubdivisionSurface_Del(node);
37988 0 : return;
37989 : case TAG_MPEG4_Clipper2D:
37990 36 : Clipper2D_Del(node);
37991 36 : return;
37992 : case TAG_MPEG4_ColorTransform:
37993 99 : ColorTransform_Del(node);
37994 99 : return;
37995 : case TAG_MPEG4_Ellipse:
37996 36 : Ellipse_Del(node);
37997 36 : return;
37998 : case TAG_MPEG4_LinearGradient:
37999 110 : LinearGradient_Del(node);
38000 110 : return;
38001 : case TAG_MPEG4_PathLayout:
38002 36 : PathLayout_Del(node);
38003 36 : return;
38004 : case TAG_MPEG4_RadialGradient:
38005 144 : RadialGradient_Del(node);
38006 144 : return;
38007 : case TAG_MPEG4_SynthesizedTexture:
38008 0 : SynthesizedTexture_Del(node);
38009 0 : return;
38010 : case TAG_MPEG4_TransformMatrix2D:
38011 1966 : TransformMatrix2D_Del(node);
38012 1966 : return;
38013 : case TAG_MPEG4_Viewport:
38014 311 : Viewport_Del(node);
38015 311 : return;
38016 : case TAG_MPEG4_XCurve2D:
38017 98 : XCurve2D_Del(node);
38018 98 : return;
38019 : case TAG_MPEG4_XFontStyle:
38020 0 : XFontStyle_Del(node);
38021 0 : return;
38022 : case TAG_MPEG4_XLineProperties:
38023 480 : XLineProperties_Del(node);
38024 480 : return;
38025 : case TAG_MPEG4_AdvancedAudioBuffer:
38026 0 : AdvancedAudioBuffer_Del(node);
38027 0 : return;
38028 : case TAG_MPEG4_AudioChannelConfig:
38029 0 : AudioChannelConfig_Del(node);
38030 0 : return;
38031 : case TAG_MPEG4_DepthImageV2:
38032 0 : DepthImageV2_Del(node);
38033 0 : return;
38034 : case TAG_MPEG4_MorphShape:
38035 0 : MorphShape_Del(node);
38036 0 : return;
38037 : case TAG_MPEG4_MultiTexture:
38038 0 : MultiTexture_Del(node);
38039 0 : return;
38040 : case TAG_MPEG4_PointTextureV2:
38041 0 : PointTextureV2_Del(node);
38042 0 : return;
38043 : case TAG_MPEG4_SBVCAnimationV2:
38044 0 : SBVCAnimationV2_Del(node);
38045 0 : return;
38046 : case TAG_MPEG4_SimpleTextureV2:
38047 0 : SimpleTextureV2_Del(node);
38048 0 : return;
38049 : case TAG_MPEG4_SurroundingSound:
38050 0 : SurroundingSound_Del(node);
38051 0 : return;
38052 : case TAG_MPEG4_Transform3DAudio:
38053 0 : Transform3DAudio_Del(node);
38054 0 : return;
38055 : case TAG_MPEG4_WideSound:
38056 0 : WideSound_Del(node);
38057 0 : return;
38058 : case TAG_MPEG4_ScoreShape:
38059 0 : ScoreShape_Del(node);
38060 0 : return;
38061 : case TAG_MPEG4_MusicScore:
38062 0 : MusicScore_Del(node);
38063 0 : return;
38064 : case TAG_MPEG4_FootPrintSetNode:
38065 0 : FootPrintSetNode_Del(node);
38066 0 : return;
38067 : case TAG_MPEG4_FootPrintNode:
38068 0 : FootPrintNode_Del(node);
38069 0 : return;
38070 : case TAG_MPEG4_BuildingPartNode:
38071 0 : BuildingPartNode_Del(node);
38072 0 : return;
38073 : case TAG_MPEG4_RoofNode:
38074 0 : RoofNode_Del(node);
38075 0 : return;
38076 : case TAG_MPEG4_FacadeNode:
38077 0 : FacadeNode_Del(node);
38078 0 : return;
38079 : case TAG_MPEG4_Shadow:
38080 0 : Shadow_Del(node);
38081 0 : return;
38082 : case TAG_MPEG4_CacheTexture:
38083 36 : CacheTexture_Del(node);
38084 36 : return;
38085 : case TAG_MPEG4_EnvironmentTest:
38086 54 : EnvironmentTest_Del(node);
38087 54 : return;
38088 : case TAG_MPEG4_KeyNavigator:
38089 66 : KeyNavigator_Del(node);
38090 66 : return;
38091 : case TAG_MPEG4_SpacePartition:
38092 0 : SpacePartition_Del(node);
38093 0 : return;
38094 : case TAG_MPEG4_Storage:
38095 18 : Storage_Del(node);
38096 18 : return;
38097 : default:
38098 : return;
38099 : }
38100 202445 : }
38101 :
38102 : u32 gf_sg_mpeg4_node_get_field_count(GF_Node *node, u8 code_mode)
38103 : {
38104 412958 : switch (node->sgprivate->tag) {
38105 : case TAG_MPEG4_Anchor:
38106 82 : return Anchor_get_field_count(node, code_mode);
38107 : case TAG_MPEG4_AnimationStream:
38108 168 : return AnimationStream_get_field_count(node, code_mode);
38109 : case TAG_MPEG4_Appearance:
38110 19001 : return Appearance_get_field_count(node, code_mode);
38111 : case TAG_MPEG4_AudioBuffer:
38112 61 : return AudioBuffer_get_field_count(node, code_mode);
38113 : case TAG_MPEG4_AudioClip:
38114 116 : return AudioClip_get_field_count(node, code_mode);
38115 : case TAG_MPEG4_AudioDelay:
38116 0 : return AudioDelay_get_field_count(node, code_mode);
38117 : case TAG_MPEG4_AudioFX:
38118 0 : return AudioFX_get_field_count(node, code_mode);
38119 : case TAG_MPEG4_AudioMix:
38120 0 : return AudioMix_get_field_count(node, code_mode);
38121 : case TAG_MPEG4_AudioSource:
38122 172 : return AudioSource_get_field_count(node, code_mode);
38123 : case TAG_MPEG4_AudioSwitch:
38124 0 : return AudioSwitch_get_field_count(node, code_mode);
38125 : case TAG_MPEG4_Background:
38126 62 : return Background_get_field_count(node, code_mode);
38127 : case TAG_MPEG4_Background2D:
38128 4832 : return Background2D_get_field_count(node, code_mode);
38129 : case TAG_MPEG4_Billboard:
38130 48 : return Billboard_get_field_count(node, code_mode);
38131 : case TAG_MPEG4_Bitmap:
38132 541 : return Bitmap_get_field_count(node, code_mode);
38133 : case TAG_MPEG4_Box:
38134 842 : return Box_get_field_count(node, code_mode);
38135 : case TAG_MPEG4_Circle:
38136 2766 : return Circle_get_field_count(node, code_mode);
38137 : case TAG_MPEG4_Collision:
38138 50 : return Collision_get_field_count(node, code_mode);
38139 : case TAG_MPEG4_Color:
38140 134 : return Color_get_field_count(node, code_mode);
38141 : case TAG_MPEG4_ColorInterpolator:
38142 204 : return ColorInterpolator_get_field_count(node, code_mode);
38143 : case TAG_MPEG4_CompositeTexture2D:
38144 67 : return CompositeTexture2D_get_field_count(node, code_mode);
38145 : case TAG_MPEG4_CompositeTexture3D:
38146 32 : return CompositeTexture3D_get_field_count(node, code_mode);
38147 : case TAG_MPEG4_Conditional:
38148 12155 : return Conditional_get_field_count(node, code_mode);
38149 : case TAG_MPEG4_Cone:
38150 96 : return Cone_get_field_count(node, code_mode);
38151 : case TAG_MPEG4_Coordinate:
38152 73 : return Coordinate_get_field_count(node, code_mode);
38153 : case TAG_MPEG4_Coordinate2D:
38154 3928 : return Coordinate2D_get_field_count(node, code_mode);
38155 : case TAG_MPEG4_CoordinateInterpolator:
38156 0 : return CoordinateInterpolator_get_field_count(node, code_mode);
38157 : case TAG_MPEG4_CoordinateInterpolator2D:
38158 68 : return CoordinateInterpolator2D_get_field_count(node, code_mode);
38159 : case TAG_MPEG4_Curve2D:
38160 1699 : return Curve2D_get_field_count(node, code_mode);
38161 : case TAG_MPEG4_Cylinder:
38162 240 : return Cylinder_get_field_count(node, code_mode);
38163 : case TAG_MPEG4_CylinderSensor:
38164 52 : return CylinderSensor_get_field_count(node, code_mode);
38165 : case TAG_MPEG4_DirectionalLight:
38166 89 : return DirectionalLight_get_field_count(node, code_mode);
38167 : case TAG_MPEG4_DiscSensor:
38168 75 : return DiscSensor_get_field_count(node, code_mode);
38169 : case TAG_MPEG4_ElevationGrid:
38170 16 : return ElevationGrid_get_field_count(node, code_mode);
38171 : case TAG_MPEG4_Expression:
38172 0 : return Expression_get_field_count(node, code_mode);
38173 : case TAG_MPEG4_Extrusion:
38174 16 : return Extrusion_get_field_count(node, code_mode);
38175 : case TAG_MPEG4_Face:
38176 0 : return Face_get_field_count(node, code_mode);
38177 : case TAG_MPEG4_FaceDefMesh:
38178 0 : return FaceDefMesh_get_field_count(node, code_mode);
38179 : case TAG_MPEG4_FaceDefTables:
38180 0 : return FaceDefTables_get_field_count(node, code_mode);
38181 : case TAG_MPEG4_FaceDefTransform:
38182 0 : return FaceDefTransform_get_field_count(node, code_mode);
38183 : case TAG_MPEG4_FAP:
38184 0 : return FAP_get_field_count(node, code_mode);
38185 : case TAG_MPEG4_FDP:
38186 0 : return FDP_get_field_count(node, code_mode);
38187 : case TAG_MPEG4_FIT:
38188 0 : return FIT_get_field_count(node, code_mode);
38189 : case TAG_MPEG4_Fog:
38190 34 : return Fog_get_field_count(node, code_mode);
38191 : case TAG_MPEG4_FontStyle:
38192 6569 : return FontStyle_get_field_count(node, code_mode);
38193 : case TAG_MPEG4_Form:
38194 249 : return Form_get_field_count(node, code_mode);
38195 : case TAG_MPEG4_Group:
38196 1266 : return Group_get_field_count(node, code_mode);
38197 : case TAG_MPEG4_ImageTexture:
38198 943 : return ImageTexture_get_field_count(node, code_mode);
38199 : case TAG_MPEG4_IndexedFaceSet:
38200 51 : return IndexedFaceSet_get_field_count(node, code_mode);
38201 : case TAG_MPEG4_IndexedFaceSet2D:
38202 1391 : return IndexedFaceSet2D_get_field_count(node, code_mode);
38203 : case TAG_MPEG4_IndexedLineSet:
38204 32 : return IndexedLineSet_get_field_count(node, code_mode);
38205 : case TAG_MPEG4_IndexedLineSet2D:
38206 759 : return IndexedLineSet2D_get_field_count(node, code_mode);
38207 : case TAG_MPEG4_Inline:
38208 199 : return Inline_get_field_count(node, code_mode);
38209 : case TAG_MPEG4_LOD:
38210 16 : return LOD_get_field_count(node, code_mode);
38211 : case TAG_MPEG4_Layer2D:
38212 332 : return Layer2D_get_field_count(node, code_mode);
38213 : case TAG_MPEG4_Layer3D:
38214 82 : return Layer3D_get_field_count(node, code_mode);
38215 : case TAG_MPEG4_Layout:
38216 2492 : return Layout_get_field_count(node, code_mode);
38217 : case TAG_MPEG4_LineProperties:
38218 1283 : return LineProperties_get_field_count(node, code_mode);
38219 : case TAG_MPEG4_ListeningPoint:
38220 0 : return ListeningPoint_get_field_count(node, code_mode);
38221 : case TAG_MPEG4_Material:
38222 1488 : return Material_get_field_count(node, code_mode);
38223 : case TAG_MPEG4_Material2D:
38224 16862 : return Material2D_get_field_count(node, code_mode);
38225 : case TAG_MPEG4_MovieTexture:
38226 552 : return MovieTexture_get_field_count(node, code_mode);
38227 : case TAG_MPEG4_NavigationInfo:
38228 230 : return NavigationInfo_get_field_count(node, code_mode);
38229 : case TAG_MPEG4_Normal:
38230 0 : return Normal_get_field_count(node, code_mode);
38231 : case TAG_MPEG4_NormalInterpolator:
38232 0 : return NormalInterpolator_get_field_count(node, code_mode);
38233 : case TAG_MPEG4_OrderedGroup:
38234 4281 : return OrderedGroup_get_field_count(node, code_mode);
38235 : case TAG_MPEG4_OrientationInterpolator:
38236 554 : return OrientationInterpolator_get_field_count(node, code_mode);
38237 : case TAG_MPEG4_PixelTexture:
38238 64 : return PixelTexture_get_field_count(node, code_mode);
38239 : case TAG_MPEG4_PlaneSensor:
38240 52 : return PlaneSensor_get_field_count(node, code_mode);
38241 : case TAG_MPEG4_PlaneSensor2D:
38242 395 : return PlaneSensor2D_get_field_count(node, code_mode);
38243 : case TAG_MPEG4_PointLight:
38244 25 : return PointLight_get_field_count(node, code_mode);
38245 : case TAG_MPEG4_PointSet:
38246 16 : return PointSet_get_field_count(node, code_mode);
38247 : case TAG_MPEG4_PointSet2D:
38248 82 : return PointSet2D_get_field_count(node, code_mode);
38249 : case TAG_MPEG4_PositionInterpolator:
38250 374 : return PositionInterpolator_get_field_count(node, code_mode);
38251 : case TAG_MPEG4_PositionInterpolator2D:
38252 1129 : return PositionInterpolator2D_get_field_count(node, code_mode);
38253 : case TAG_MPEG4_ProximitySensor2D:
38254 68 : return ProximitySensor2D_get_field_count(node, code_mode);
38255 : case TAG_MPEG4_ProximitySensor:
38256 34 : return ProximitySensor_get_field_count(node, code_mode);
38257 : case TAG_MPEG4_QuantizationParameter:
38258 109 : return QuantizationParameter_get_field_count(node, code_mode);
38259 : case TAG_MPEG4_Rectangle:
38260 6505 : return Rectangle_get_field_count(node, code_mode);
38261 : case TAG_MPEG4_ScalarInterpolator:
38262 1514 : return ScalarInterpolator_get_field_count(node, code_mode);
38263 : case TAG_MPEG4_Script:
38264 0 : return Script_get_field_count(node, code_mode);
38265 : case TAG_MPEG4_Shape:
38266 28084 : return Shape_get_field_count(node, code_mode);
38267 : case TAG_MPEG4_Sound:
38268 32 : return Sound_get_field_count(node, code_mode);
38269 : case TAG_MPEG4_Sound2D:
38270 161 : return Sound2D_get_field_count(node, code_mode);
38271 : case TAG_MPEG4_Sphere:
38272 176 : return Sphere_get_field_count(node, code_mode);
38273 : case TAG_MPEG4_SphereSensor:
38274 52 : return SphereSensor_get_field_count(node, code_mode);
38275 : case TAG_MPEG4_SpotLight:
38276 25 : return SpotLight_get_field_count(node, code_mode);
38277 : case TAG_MPEG4_Switch:
38278 1145 : return Switch_get_field_count(node, code_mode);
38279 : case TAG_MPEG4_TermCap:
38280 0 : return TermCap_get_field_count(node, code_mode);
38281 : case TAG_MPEG4_Text:
38282 12383 : return Text_get_field_count(node, code_mode);
38283 : case TAG_MPEG4_TextureCoordinate:
38284 0 : return TextureCoordinate_get_field_count(node, code_mode);
38285 : case TAG_MPEG4_TextureTransform:
38286 262 : return TextureTransform_get_field_count(node, code_mode);
38287 : case TAG_MPEG4_TimeSensor:
38288 3148 : return TimeSensor_get_field_count(node, code_mode);
38289 : case TAG_MPEG4_TouchSensor:
38290 10068 : return TouchSensor_get_field_count(node, code_mode);
38291 : case TAG_MPEG4_Transform:
38292 2388 : return Transform_get_field_count(node, code_mode);
38293 : case TAG_MPEG4_Transform2D:
38294 28608 : return Transform2D_get_field_count(node, code_mode);
38295 : case TAG_MPEG4_Valuator:
38296 11724 : return Valuator_get_field_count(node, code_mode);
38297 : case TAG_MPEG4_Viewpoint:
38298 601 : return Viewpoint_get_field_count(node, code_mode);
38299 : case TAG_MPEG4_VisibilitySensor:
38300 34 : return VisibilitySensor_get_field_count(node, code_mode);
38301 : case TAG_MPEG4_Viseme:
38302 0 : return Viseme_get_field_count(node, code_mode);
38303 : case TAG_MPEG4_WorldInfo:
38304 4762 : return WorldInfo_get_field_count(node, code_mode);
38305 : case TAG_MPEG4_AcousticMaterial:
38306 0 : return AcousticMaterial_get_field_count(node, code_mode);
38307 : case TAG_MPEG4_AcousticScene:
38308 0 : return AcousticScene_get_field_count(node, code_mode);
38309 : case TAG_MPEG4_ApplicationWindow:
38310 0 : return ApplicationWindow_get_field_count(node, code_mode);
38311 : case TAG_MPEG4_BAP:
38312 0 : return BAP_get_field_count(node, code_mode);
38313 : case TAG_MPEG4_BDP:
38314 0 : return BDP_get_field_count(node, code_mode);
38315 : case TAG_MPEG4_Body:
38316 0 : return Body_get_field_count(node, code_mode);
38317 : case TAG_MPEG4_BodyDefTable:
38318 0 : return BodyDefTable_get_field_count(node, code_mode);
38319 : case TAG_MPEG4_BodySegmentConnectionHint:
38320 0 : return BodySegmentConnectionHint_get_field_count(node, code_mode);
38321 : case TAG_MPEG4_DirectiveSound:
38322 0 : return DirectiveSound_get_field_count(node, code_mode);
38323 : case TAG_MPEG4_Hierarchical3DMesh:
38324 0 : return Hierarchical3DMesh_get_field_count(node, code_mode);
38325 : case TAG_MPEG4_MaterialKey:
38326 16 : return MaterialKey_get_field_count(node, code_mode);
38327 : case TAG_MPEG4_PerceptualParameters:
38328 0 : return PerceptualParameters_get_field_count(node, code_mode);
38329 : case TAG_MPEG4_TemporalTransform:
38330 0 : return TemporalTransform_get_field_count(node, code_mode);
38331 : case TAG_MPEG4_TemporalGroup:
38332 0 : return TemporalGroup_get_field_count(node, code_mode);
38333 : case TAG_MPEG4_ServerCommand:
38334 0 : return ServerCommand_get_field_count(node, code_mode);
38335 : case TAG_MPEG4_InputSensor:
38336 48 : return InputSensor_get_field_count(node, code_mode);
38337 : case TAG_MPEG4_MatteTexture:
38338 0 : return MatteTexture_get_field_count(node, code_mode);
38339 : case TAG_MPEG4_MediaBuffer:
38340 0 : return MediaBuffer_get_field_count(node, code_mode);
38341 : case TAG_MPEG4_MediaControl:
38342 391 : return MediaControl_get_field_count(node, code_mode);
38343 : case TAG_MPEG4_MediaSensor:
38344 454 : return MediaSensor_get_field_count(node, code_mode);
38345 : case TAG_MPEG4_BitWrapper:
38346 0 : return BitWrapper_get_field_count(node, code_mode);
38347 : case TAG_MPEG4_CoordinateInterpolator4D:
38348 0 : return CoordinateInterpolator4D_get_field_count(node, code_mode);
38349 : case TAG_MPEG4_DepthImage:
38350 0 : return DepthImage_get_field_count(node, code_mode);
38351 : case TAG_MPEG4_FFD:
38352 0 : return FFD_get_field_count(node, code_mode);
38353 : case TAG_MPEG4_Implicit:
38354 0 : return Implicit_get_field_count(node, code_mode);
38355 : case TAG_MPEG4_XXLFM_Appearance:
38356 0 : return XXLFM_Appearance_get_field_count(node, code_mode);
38357 : case TAG_MPEG4_XXLFM_BlendList:
38358 0 : return XXLFM_BlendList_get_field_count(node, code_mode);
38359 : case TAG_MPEG4_XXLFM_FrameList:
38360 0 : return XXLFM_FrameList_get_field_count(node, code_mode);
38361 : case TAG_MPEG4_XXLFM_LightMap:
38362 0 : return XXLFM_LightMap_get_field_count(node, code_mode);
38363 : case TAG_MPEG4_XXLFM_SurfaceMapList:
38364 0 : return XXLFM_SurfaceMapList_get_field_count(node, code_mode);
38365 : case TAG_MPEG4_XXLFM_ViewMapList:
38366 0 : return XXLFM_ViewMapList_get_field_count(node, code_mode);
38367 : case TAG_MPEG4_MeshGrid:
38368 0 : return MeshGrid_get_field_count(node, code_mode);
38369 : case TAG_MPEG4_NonLinearDeformer:
38370 28 : return NonLinearDeformer_get_field_count(node, code_mode);
38371 : case TAG_MPEG4_NurbsCurve:
38372 0 : return NurbsCurve_get_field_count(node, code_mode);
38373 : case TAG_MPEG4_NurbsCurve2D:
38374 0 : return NurbsCurve2D_get_field_count(node, code_mode);
38375 : case TAG_MPEG4_NurbsSurface:
38376 0 : return NurbsSurface_get_field_count(node, code_mode);
38377 : case TAG_MPEG4_OctreeImage:
38378 0 : return OctreeImage_get_field_count(node, code_mode);
38379 : case TAG_MPEG4_XXParticles:
38380 0 : return XXParticles_get_field_count(node, code_mode);
38381 : case TAG_MPEG4_XXParticleInitBox:
38382 0 : return XXParticleInitBox_get_field_count(node, code_mode);
38383 : case TAG_MPEG4_XXPlanarObstacle:
38384 0 : return XXPlanarObstacle_get_field_count(node, code_mode);
38385 : case TAG_MPEG4_XXPointAttractor:
38386 0 : return XXPointAttractor_get_field_count(node, code_mode);
38387 : case TAG_MPEG4_PointTexture:
38388 0 : return PointTexture_get_field_count(node, code_mode);
38389 : case TAG_MPEG4_PositionAnimator:
38390 34 : return PositionAnimator_get_field_count(node, code_mode);
38391 : case TAG_MPEG4_PositionAnimator2D:
38392 34 : return PositionAnimator2D_get_field_count(node, code_mode);
38393 : case TAG_MPEG4_PositionInterpolator4D:
38394 0 : return PositionInterpolator4D_get_field_count(node, code_mode);
38395 : case TAG_MPEG4_ProceduralTexture:
38396 0 : return ProceduralTexture_get_field_count(node, code_mode);
38397 : case TAG_MPEG4_Quadric:
38398 0 : return Quadric_get_field_count(node, code_mode);
38399 : case TAG_MPEG4_SBBone:
38400 0 : return SBBone_get_field_count(node, code_mode);
38401 : case TAG_MPEG4_SBMuscle:
38402 0 : return SBMuscle_get_field_count(node, code_mode);
38403 : case TAG_MPEG4_SBSegment:
38404 0 : return SBSegment_get_field_count(node, code_mode);
38405 : case TAG_MPEG4_SBSite:
38406 0 : return SBSite_get_field_count(node, code_mode);
38407 : case TAG_MPEG4_SBSkinnedModel:
38408 0 : return SBSkinnedModel_get_field_count(node, code_mode);
38409 : case TAG_MPEG4_SBVCAnimation:
38410 0 : return SBVCAnimation_get_field_count(node, code_mode);
38411 : case TAG_MPEG4_ScalarAnimator:
38412 34 : return ScalarAnimator_get_field_count(node, code_mode);
38413 : case TAG_MPEG4_SimpleTexture:
38414 0 : return SimpleTexture_get_field_count(node, code_mode);
38415 : case TAG_MPEG4_SolidRep:
38416 0 : return SolidRep_get_field_count(node, code_mode);
38417 : case TAG_MPEG4_SubdivisionSurface:
38418 0 : return SubdivisionSurface_get_field_count(node, code_mode);
38419 : case TAG_MPEG4_SubdivSurfaceSector:
38420 0 : return SubdivSurfaceSector_get_field_count(node, code_mode);
38421 : case TAG_MPEG4_WaveletSubdivisionSurface:
38422 0 : return WaveletSubdivisionSurface_get_field_count(node, code_mode);
38423 : case TAG_MPEG4_Clipper2D:
38424 86 : return Clipper2D_get_field_count(node, code_mode);
38425 : case TAG_MPEG4_ColorTransform:
38426 149 : return ColorTransform_get_field_count(node, code_mode);
38427 : case TAG_MPEG4_Ellipse:
38428 32 : return Ellipse_get_field_count(node, code_mode);
38429 : case TAG_MPEG4_LinearGradient:
38430 187 : return LinearGradient_get_field_count(node, code_mode);
38431 : case TAG_MPEG4_PathLayout:
38432 122 : return PathLayout_get_field_count(node, code_mode);
38433 : case TAG_MPEG4_RadialGradient:
38434 229 : return RadialGradient_get_field_count(node, code_mode);
38435 : case TAG_MPEG4_SynthesizedTexture:
38436 0 : return SynthesizedTexture_get_field_count(node, code_mode);
38437 : case TAG_MPEG4_TransformMatrix2D:
38438 2069 : return TransformMatrix2D_get_field_count(node, code_mode);
38439 : case TAG_MPEG4_Viewport:
38440 293 : return Viewport_get_field_count(node, code_mode);
38441 : case TAG_MPEG4_XCurve2D:
38442 86 : return XCurve2D_get_field_count(node, code_mode);
38443 : case TAG_MPEG4_XFontStyle:
38444 0 : return XFontStyle_get_field_count(node, code_mode);
38445 : case TAG_MPEG4_XLineProperties:
38446 538 : return XLineProperties_get_field_count(node, code_mode);
38447 : case TAG_MPEG4_AdvancedAudioBuffer:
38448 0 : return AdvancedAudioBuffer_get_field_count(node, code_mode);
38449 : case TAG_MPEG4_AudioChannelConfig:
38450 0 : return AudioChannelConfig_get_field_count(node, code_mode);
38451 : case TAG_MPEG4_DepthImageV2:
38452 0 : return DepthImageV2_get_field_count(node, code_mode);
38453 : case TAG_MPEG4_MorphShape:
38454 0 : return MorphShape_get_field_count(node, code_mode);
38455 : case TAG_MPEG4_MultiTexture:
38456 0 : return MultiTexture_get_field_count(node, code_mode);
38457 : case TAG_MPEG4_PointTextureV2:
38458 0 : return PointTextureV2_get_field_count(node, code_mode);
38459 : case TAG_MPEG4_SBVCAnimationV2:
38460 0 : return SBVCAnimationV2_get_field_count(node, code_mode);
38461 : case TAG_MPEG4_SimpleTextureV2:
38462 0 : return SimpleTextureV2_get_field_count(node, code_mode);
38463 : case TAG_MPEG4_SurroundingSound:
38464 0 : return SurroundingSound_get_field_count(node, code_mode);
38465 : case TAG_MPEG4_Transform3DAudio:
38466 0 : return Transform3DAudio_get_field_count(node, code_mode);
38467 : case TAG_MPEG4_WideSound:
38468 0 : return WideSound_get_field_count(node, code_mode);
38469 : case TAG_MPEG4_ScoreShape:
38470 0 : return ScoreShape_get_field_count(node, code_mode);
38471 : case TAG_MPEG4_MusicScore:
38472 0 : return MusicScore_get_field_count(node, code_mode);
38473 : case TAG_MPEG4_FootPrintSetNode:
38474 0 : return FootPrintSetNode_get_field_count(node, code_mode);
38475 : case TAG_MPEG4_FootPrintNode:
38476 0 : return FootPrintNode_get_field_count(node, code_mode);
38477 : case TAG_MPEG4_BuildingPartNode:
38478 0 : return BuildingPartNode_get_field_count(node, code_mode);
38479 : case TAG_MPEG4_RoofNode:
38480 0 : return RoofNode_get_field_count(node, code_mode);
38481 : case TAG_MPEG4_FacadeNode:
38482 0 : return FacadeNode_get_field_count(node, code_mode);
38483 : case TAG_MPEG4_Shadow:
38484 0 : return Shadow_get_field_count(node, code_mode);
38485 : case TAG_MPEG4_CacheTexture:
38486 32 : return CacheTexture_get_field_count(node, code_mode);
38487 : case TAG_MPEG4_EnvironmentTest:
38488 75 : return EnvironmentTest_get_field_count(node, code_mode);
38489 : case TAG_MPEG4_KeyNavigator:
38490 156 : return KeyNavigator_get_field_count(node, code_mode);
38491 : case TAG_MPEG4_SpacePartition:
38492 0 : return SpacePartition_get_field_count(node, code_mode);
38493 : case TAG_MPEG4_Storage:
38494 16 : return Storage_get_field_count(node, code_mode);
38495 : default:
38496 0 : return 0;
38497 : }
38498 206479 : }
38499 :
38500 : GF_Err gf_sg_mpeg4_node_get_field(GF_Node *node, GF_FieldInfo *field)
38501 : {
38502 2363586 : switch (node->sgprivate->tag) {
38503 : case TAG_MPEG4_Anchor:
38504 577 : return Anchor_get_field(node, field);
38505 : case TAG_MPEG4_AnimationStream:
38506 1102 : return AnimationStream_get_field(node, field);
38507 : case TAG_MPEG4_Appearance:
38508 52210 : return Appearance_get_field(node, field);
38509 : case TAG_MPEG4_AudioBuffer:
38510 284 : return AudioBuffer_get_field(node, field);
38511 : case TAG_MPEG4_AudioClip:
38512 820 : return AudioClip_get_field(node, field);
38513 : case TAG_MPEG4_AudioDelay:
38514 0 : return AudioDelay_get_field(node, field);
38515 : case TAG_MPEG4_AudioFX:
38516 0 : return AudioFX_get_field(node, field);
38517 : case TAG_MPEG4_AudioMix:
38518 0 : return AudioMix_get_field(node, field);
38519 : case TAG_MPEG4_AudioSource:
38520 1315 : return AudioSource_get_field(node, field);
38521 : case TAG_MPEG4_AudioSwitch:
38522 0 : return AudioSwitch_get_field(node, field);
38523 : case TAG_MPEG4_Background:
38524 935 : return Background_get_field(node, field);
38525 : case TAG_MPEG4_Background2D:
38526 19358 : return Background2D_get_field(node, field);
38527 : case TAG_MPEG4_Billboard:
38528 200 : return Billboard_get_field(node, field);
38529 : case TAG_MPEG4_Bitmap:
38530 754 : return Bitmap_get_field(node, field);
38531 : case TAG_MPEG4_Box:
38532 1632 : return Box_get_field(node, field);
38533 : case TAG_MPEG4_Circle:
38534 5592 : return Circle_get_field(node, field);
38535 : case TAG_MPEG4_Collision:
38536 175 : return Collision_get_field(node, field);
38537 : case TAG_MPEG4_Color:
38538 276 : return Color_get_field(node, field);
38539 : case TAG_MPEG4_ColorInterpolator:
38540 576 : return ColorInterpolator_get_field(node, field);
38541 : case TAG_MPEG4_CompositeTexture2D:
38542 702 : return CompositeTexture2D_get_field(node, field);
38543 : case TAG_MPEG4_CompositeTexture3D:
38544 352 : return CompositeTexture3D_get_field(node, field);
38545 : case TAG_MPEG4_Conditional:
38546 29117 : return Conditional_get_field(node, field);
38547 : case TAG_MPEG4_Cone:
38548 657 : return Cone_get_field(node, field);
38549 : case TAG_MPEG4_Coordinate:
38550 150 : return Coordinate_get_field(node, field);
38551 : case TAG_MPEG4_Coordinate2D:
38552 8183 : return Coordinate2D_get_field(node, field);
38553 : case TAG_MPEG4_CoordinateInterpolator:
38554 0 : return CoordinateInterpolator_get_field(node, field);
38555 : case TAG_MPEG4_CoordinateInterpolator2D:
38556 192 : return CoordinateInterpolator2D_get_field(node, field);
38557 : case TAG_MPEG4_Curve2D:
38558 7917 : return Curve2D_get_field(node, field);
38559 : case TAG_MPEG4_Cylinder:
38560 2025 : return Cylinder_get_field(node, field);
38561 : case TAG_MPEG4_CylinderSensor:
38562 161 : return CylinderSensor_get_field(node, field);
38563 : case TAG_MPEG4_DirectionalLight:
38564 552 : return DirectionalLight_get_field(node, field);
38565 : case TAG_MPEG4_DiscSensor:
38566 372 : return DiscSensor_get_field(node, field);
38567 : case TAG_MPEG4_ElevationGrid:
38568 304 : return ElevationGrid_get_field(node, field);
38569 : case TAG_MPEG4_Expression:
38570 0 : return Expression_get_field(node, field);
38571 : case TAG_MPEG4_Extrusion:
38572 300 : return Extrusion_get_field(node, field);
38573 : case TAG_MPEG4_Face:
38574 0 : return Face_get_field(node, field);
38575 : case TAG_MPEG4_FaceDefMesh:
38576 0 : return FaceDefMesh_get_field(node, field);
38577 : case TAG_MPEG4_FaceDefTables:
38578 0 : return FaceDefTables_get_field(node, field);
38579 : case TAG_MPEG4_FaceDefTransform:
38580 0 : return FaceDefTransform_get_field(node, field);
38581 : case TAG_MPEG4_FAP:
38582 0 : return FAP_get_field(node, field);
38583 : case TAG_MPEG4_FDP:
38584 0 : return FDP_get_field(node, field);
38585 : case TAG_MPEG4_FIT:
38586 0 : return FIT_get_field(node, field);
38587 : case TAG_MPEG4_Fog:
38588 114 : return Fog_get_field(node, field);
38589 : case TAG_MPEG4_FontStyle:
38590 92781 : return FontStyle_get_field(node, field);
38591 : case TAG_MPEG4_Form:
38592 2649 : return Form_get_field(node, field);
38593 : case TAG_MPEG4_Group:
38594 3018 : return Group_get_field(node, field);
38595 : case TAG_MPEG4_ImageTexture:
38596 4523 : return ImageTexture_get_field(node, field);
38597 : case TAG_MPEG4_IndexedFaceSet:
38598 1000 : return IndexedFaceSet_get_field(node, field);
38599 : case TAG_MPEG4_IndexedFaceSet2D:
38600 14480 : return IndexedFaceSet2D_get_field(node, field);
38601 : case TAG_MPEG4_IndexedLineSet:
38602 309 : return IndexedLineSet_get_field(node, field);
38603 : case TAG_MPEG4_IndexedLineSet2D:
38604 6213 : return IndexedLineSet2D_get_field(node, field);
38605 : case TAG_MPEG4_Inline:
38606 468 : return Inline_get_field(node, field);
38607 : case TAG_MPEG4_LOD:
38608 77 : return LOD_get_field(node, field);
38609 : case TAG_MPEG4_Layer2D:
38610 2326 : return Layer2D_get_field(node, field);
38611 : case TAG_MPEG4_Layer3D:
38612 688 : return Layer3D_get_field(node, field);
38613 : case TAG_MPEG4_Layout:
38614 45687 : return Layout_get_field(node, field);
38615 : case TAG_MPEG4_LineProperties:
38616 5819 : return LineProperties_get_field(node, field);
38617 : case TAG_MPEG4_ListeningPoint:
38618 0 : return ListeningPoint_get_field(node, field);
38619 : case TAG_MPEG4_Material:
38620 10938 : return Material_get_field(node, field);
38621 : case TAG_MPEG4_Material2D:
38622 99444 : return Material2D_get_field(node, field);
38623 : case TAG_MPEG4_MovieTexture:
38624 5901 : return MovieTexture_get_field(node, field);
38625 : case TAG_MPEG4_NavigationInfo:
38626 1798 : return NavigationInfo_get_field(node, field);
38627 : case TAG_MPEG4_Normal:
38628 0 : return Normal_get_field(node, field);
38629 : case TAG_MPEG4_NormalInterpolator:
38630 0 : return NormalInterpolator_get_field(node, field);
38631 : case TAG_MPEG4_OrderedGroup:
38632 14795 : return OrderedGroup_get_field(node, field);
38633 : case TAG_MPEG4_OrientationInterpolator:
38634 1550 : return OrientationInterpolator_get_field(node, field);
38635 : case TAG_MPEG4_PixelTexture:
38636 276 : return PixelTexture_get_field(node, field);
38637 : case TAG_MPEG4_PlaneSensor:
38638 188 : return PlaneSensor_get_field(node, field);
38639 : case TAG_MPEG4_PlaneSensor2D:
38640 2360 : return PlaneSensor2D_get_field(node, field);
38641 : case TAG_MPEG4_PointLight:
38642 179 : return PointLight_get_field(node, field);
38643 : case TAG_MPEG4_PointSet:
38644 33 : return PointSet_get_field(node, field);
38645 : case TAG_MPEG4_PointSet2D:
38646 169 : return PointSet2D_get_field(node, field);
38647 : case TAG_MPEG4_PositionInterpolator:
38648 1056 : return PositionInterpolator_get_field(node, field);
38649 : case TAG_MPEG4_PositionInterpolator2D:
38650 3232 : return PositionInterpolator2D_get_field(node, field);
38651 : case TAG_MPEG4_ProximitySensor2D:
38652 240 : return ProximitySensor2D_get_field(node, field);
38653 : case TAG_MPEG4_ProximitySensor:
38654 122 : return ProximitySensor_get_field(node, field);
38655 : case TAG_MPEG4_QuantizationParameter:
38656 5310 : return QuantizationParameter_get_field(node, field);
38657 : case TAG_MPEG4_Rectangle:
38658 13242 : return Rectangle_get_field(node, field);
38659 : case TAG_MPEG4_ScalarInterpolator:
38660 4118 : return ScalarInterpolator_get_field(node, field);
38661 : case TAG_MPEG4_Script:
38662 9931 : return Script_get_field(node, field);
38663 : case TAG_MPEG4_Shape:
38664 79052 : return Shape_get_field(node, field);
38665 : case TAG_MPEG4_Sound:
38666 419 : return Sound_get_field(node, field);
38667 : case TAG_MPEG4_Sound2D:
38668 782 : return Sound2D_get_field(node, field);
38669 : case TAG_MPEG4_Sphere:
38670 350 : return Sphere_get_field(node, field);
38671 : case TAG_MPEG4_SphereSensor:
38672 107 : return SphereSensor_get_field(node, field);
38673 : case TAG_MPEG4_SpotLight:
38674 220 : return SpotLight_get_field(node, field);
38675 : case TAG_MPEG4_Switch:
38676 2083 : return Switch_get_field(node, field);
38677 : case TAG_MPEG4_TermCap:
38678 0 : return TermCap_get_field(node, field);
38679 : case TAG_MPEG4_Text:
38680 69202 : return Text_get_field(node, field);
38681 : case TAG_MPEG4_TextureCoordinate:
38682 0 : return TextureCoordinate_get_field(node, field);
38683 : case TAG_MPEG4_TextureTransform:
38684 1194 : return TextureTransform_get_field(node, field);
38685 : case TAG_MPEG4_TimeSensor:
38686 16701 : return TimeSensor_get_field(node, field);
38687 : case TAG_MPEG4_TouchSensor:
38688 26450 : return TouchSensor_get_field(node, field);
38689 : case TAG_MPEG4_Transform:
38690 20076 : return Transform_get_field(node, field);
38691 : case TAG_MPEG4_Transform2D:
38692 236651 : return Transform2D_get_field(node, field);
38693 : case TAG_MPEG4_Valuator:
38694 169591 : return Valuator_get_field(node, field);
38695 : case TAG_MPEG4_Viewpoint:
38696 4443 : return Viewpoint_get_field(node, field);
38697 : case TAG_MPEG4_VisibilitySensor:
38698 108 : return VisibilitySensor_get_field(node, field);
38699 : case TAG_MPEG4_Viseme:
38700 0 : return Viseme_get_field(node, field);
38701 : case TAG_MPEG4_WorldInfo:
38702 19642 : return WorldInfo_get_field(node, field);
38703 : case TAG_MPEG4_AcousticMaterial:
38704 0 : return AcousticMaterial_get_field(node, field);
38705 : case TAG_MPEG4_AcousticScene:
38706 0 : return AcousticScene_get_field(node, field);
38707 : case TAG_MPEG4_ApplicationWindow:
38708 0 : return ApplicationWindow_get_field(node, field);
38709 : case TAG_MPEG4_BAP:
38710 0 : return BAP_get_field(node, field);
38711 : case TAG_MPEG4_BDP:
38712 0 : return BDP_get_field(node, field);
38713 : case TAG_MPEG4_Body:
38714 0 : return Body_get_field(node, field);
38715 : case TAG_MPEG4_BodyDefTable:
38716 0 : return BodyDefTable_get_field(node, field);
38717 : case TAG_MPEG4_BodySegmentConnectionHint:
38718 0 : return BodySegmentConnectionHint_get_field(node, field);
38719 : case TAG_MPEG4_DirectiveSound:
38720 0 : return DirectiveSound_get_field(node, field);
38721 : case TAG_MPEG4_Hierarchical3DMesh:
38722 0 : return Hierarchical3DMesh_get_field(node, field);
38723 : case TAG_MPEG4_MaterialKey:
38724 157 : return MaterialKey_get_field(node, field);
38725 : case TAG_MPEG4_PerceptualParameters:
38726 0 : return PerceptualParameters_get_field(node, field);
38727 : case TAG_MPEG4_TemporalTransform:
38728 0 : return TemporalTransform_get_field(node, field);
38729 : case TAG_MPEG4_TemporalGroup:
38730 0 : return TemporalGroup_get_field(node, field);
38731 : case TAG_MPEG4_ServerCommand:
38732 0 : return ServerCommand_get_field(node, field);
38733 : case TAG_MPEG4_InputSensor:
38734 255 : return InputSensor_get_field(node, field);
38735 : case TAG_MPEG4_MatteTexture:
38736 0 : return MatteTexture_get_field(node, field);
38737 : case TAG_MPEG4_MediaBuffer:
38738 0 : return MediaBuffer_get_field(node, field);
38739 : case TAG_MPEG4_MediaControl:
38740 3077 : return MediaControl_get_field(node, field);
38741 : case TAG_MPEG4_MediaSensor:
38742 1127 : return MediaSensor_get_field(node, field);
38743 : case TAG_MPEG4_BitWrapper:
38744 0 : return BitWrapper_get_field(node, field);
38745 : case TAG_MPEG4_CoordinateInterpolator4D:
38746 0 : return CoordinateInterpolator4D_get_field(node, field);
38747 : case TAG_MPEG4_DepthImage:
38748 0 : return DepthImage_get_field(node, field);
38749 : case TAG_MPEG4_FFD:
38750 0 : return FFD_get_field(node, field);
38751 : case TAG_MPEG4_Implicit:
38752 0 : return Implicit_get_field(node, field);
38753 : case TAG_MPEG4_XXLFM_Appearance:
38754 0 : return XXLFM_Appearance_get_field(node, field);
38755 : case TAG_MPEG4_XXLFM_BlendList:
38756 0 : return XXLFM_BlendList_get_field(node, field);
38757 : case TAG_MPEG4_XXLFM_FrameList:
38758 0 : return XXLFM_FrameList_get_field(node, field);
38759 : case TAG_MPEG4_XXLFM_LightMap:
38760 0 : return XXLFM_LightMap_get_field(node, field);
38761 : case TAG_MPEG4_XXLFM_SurfaceMapList:
38762 0 : return XXLFM_SurfaceMapList_get_field(node, field);
38763 : case TAG_MPEG4_XXLFM_ViewMapList:
38764 0 : return XXLFM_ViewMapList_get_field(node, field);
38765 : case TAG_MPEG4_MeshGrid:
38766 0 : return MeshGrid_get_field(node, field);
38767 : case TAG_MPEG4_NonLinearDeformer:
38768 178 : return NonLinearDeformer_get_field(node, field);
38769 : case TAG_MPEG4_NurbsCurve:
38770 0 : return NurbsCurve_get_field(node, field);
38771 : case TAG_MPEG4_NurbsCurve2D:
38772 0 : return NurbsCurve2D_get_field(node, field);
38773 : case TAG_MPEG4_NurbsSurface:
38774 0 : return NurbsSurface_get_field(node, field);
38775 : case TAG_MPEG4_OctreeImage:
38776 0 : return OctreeImage_get_field(node, field);
38777 : case TAG_MPEG4_XXParticles:
38778 0 : return XXParticles_get_field(node, field);
38779 : case TAG_MPEG4_XXParticleInitBox:
38780 0 : return XXParticleInitBox_get_field(node, field);
38781 : case TAG_MPEG4_XXPlanarObstacle:
38782 0 : return XXPlanarObstacle_get_field(node, field);
38783 : case TAG_MPEG4_XXPointAttractor:
38784 0 : return XXPointAttractor_get_field(node, field);
38785 : case TAG_MPEG4_PointTexture:
38786 0 : return PointTexture_get_field(node, field);
38787 : case TAG_MPEG4_PositionAnimator:
38788 281 : return PositionAnimator_get_field(node, field);
38789 : case TAG_MPEG4_PositionAnimator2D:
38790 281 : return PositionAnimator2D_get_field(node, field);
38791 : case TAG_MPEG4_PositionInterpolator4D:
38792 0 : return PositionInterpolator4D_get_field(node, field);
38793 : case TAG_MPEG4_ProceduralTexture:
38794 0 : return ProceduralTexture_get_field(node, field);
38795 : case TAG_MPEG4_Quadric:
38796 0 : return Quadric_get_field(node, field);
38797 : case TAG_MPEG4_SBBone:
38798 0 : return SBBone_get_field(node, field);
38799 : case TAG_MPEG4_SBMuscle:
38800 0 : return SBMuscle_get_field(node, field);
38801 : case TAG_MPEG4_SBSegment:
38802 0 : return SBSegment_get_field(node, field);
38803 : case TAG_MPEG4_SBSite:
38804 0 : return SBSite_get_field(node, field);
38805 : case TAG_MPEG4_SBSkinnedModel:
38806 0 : return SBSkinnedModel_get_field(node, field);
38807 : case TAG_MPEG4_SBVCAnimation:
38808 0 : return SBVCAnimation_get_field(node, field);
38809 : case TAG_MPEG4_ScalarAnimator:
38810 241 : return ScalarAnimator_get_field(node, field);
38811 : case TAG_MPEG4_SimpleTexture:
38812 0 : return SimpleTexture_get_field(node, field);
38813 : case TAG_MPEG4_SolidRep:
38814 0 : return SolidRep_get_field(node, field);
38815 : case TAG_MPEG4_SubdivisionSurface:
38816 0 : return SubdivisionSurface_get_field(node, field);
38817 : case TAG_MPEG4_SubdivSurfaceSector:
38818 0 : return SubdivSurfaceSector_get_field(node, field);
38819 : case TAG_MPEG4_WaveletSubdivisionSurface:
38820 0 : return WaveletSubdivisionSurface_get_field(node, field);
38821 : case TAG_MPEG4_Clipper2D:
38822 364 : return Clipper2D_get_field(node, field);
38823 : case TAG_MPEG4_ColorTransform:
38824 2518 : return ColorTransform_get_field(node, field);
38825 : case TAG_MPEG4_Ellipse:
38826 66 : return Ellipse_get_field(node, field);
38827 : case TAG_MPEG4_LinearGradient:
38828 1175 : return LinearGradient_get_field(node, field);
38829 : case TAG_MPEG4_PathLayout:
38830 536 : return PathLayout_get_field(node, field);
38831 : case TAG_MPEG4_RadialGradient:
38832 1706 : return RadialGradient_get_field(node, field);
38833 : case TAG_MPEG4_SynthesizedTexture:
38834 0 : return SynthesizedTexture_get_field(node, field);
38835 : case TAG_MPEG4_TransformMatrix2D:
38836 18576 : return TransformMatrix2D_get_field(node, field);
38837 : case TAG_MPEG4_Viewport:
38838 3179 : return Viewport_get_field(node, field);
38839 : case TAG_MPEG4_XCurve2D:
38840 411 : return XCurve2D_get_field(node, field);
38841 : case TAG_MPEG4_XFontStyle:
38842 0 : return XFontStyle_get_field(node, field);
38843 : case TAG_MPEG4_XLineProperties:
38844 7171 : return XLineProperties_get_field(node, field);
38845 : case TAG_MPEG4_AdvancedAudioBuffer:
38846 0 : return AdvancedAudioBuffer_get_field(node, field);
38847 : case TAG_MPEG4_AudioChannelConfig:
38848 0 : return AudioChannelConfig_get_field(node, field);
38849 : case TAG_MPEG4_DepthImageV2:
38850 0 : return DepthImageV2_get_field(node, field);
38851 : case TAG_MPEG4_MorphShape:
38852 0 : return MorphShape_get_field(node, field);
38853 : case TAG_MPEG4_MultiTexture:
38854 0 : return MultiTexture_get_field(node, field);
38855 : case TAG_MPEG4_PointTextureV2:
38856 0 : return PointTextureV2_get_field(node, field);
38857 : case TAG_MPEG4_SBVCAnimationV2:
38858 0 : return SBVCAnimationV2_get_field(node, field);
38859 : case TAG_MPEG4_SimpleTextureV2:
38860 0 : return SimpleTextureV2_get_field(node, field);
38861 : case TAG_MPEG4_SurroundingSound:
38862 0 : return SurroundingSound_get_field(node, field);
38863 : case TAG_MPEG4_Transform3DAudio:
38864 0 : return Transform3DAudio_get_field(node, field);
38865 : case TAG_MPEG4_WideSound:
38866 0 : return WideSound_get_field(node, field);
38867 : case TAG_MPEG4_ScoreShape:
38868 0 : return ScoreShape_get_field(node, field);
38869 : case TAG_MPEG4_MusicScore:
38870 0 : return MusicScore_get_field(node, field);
38871 : case TAG_MPEG4_FootPrintSetNode:
38872 0 : return FootPrintSetNode_get_field(node, field);
38873 : case TAG_MPEG4_FootPrintNode:
38874 0 : return FootPrintNode_get_field(node, field);
38875 : case TAG_MPEG4_BuildingPartNode:
38876 0 : return BuildingPartNode_get_field(node, field);
38877 : case TAG_MPEG4_RoofNode:
38878 0 : return RoofNode_get_field(node, field);
38879 : case TAG_MPEG4_FacadeNode:
38880 0 : return FacadeNode_get_field(node, field);
38881 : case TAG_MPEG4_Shadow:
38882 0 : return Shadow_get_field(node, field);
38883 : case TAG_MPEG4_CacheTexture:
38884 374 : return CacheTexture_get_field(node, field);
38885 : case TAG_MPEG4_EnvironmentTest:
38886 390 : return EnvironmentTest_get_field(node, field);
38887 : case TAG_MPEG4_KeyNavigator:
38888 708 : return KeyNavigator_get_field(node, field);
38889 : case TAG_MPEG4_SpacePartition:
38890 0 : return SpacePartition_get_field(node, field);
38891 : case TAG_MPEG4_Storage:
38892 127 : return Storage_get_field(node, field);
38893 : default:
38894 0 : return GF_BAD_PARAM;
38895 : }
38896 1181793 : }
38897 :
38898 : GF_Err gf_sg_mpeg4_node_get_field_index(GF_Node *node, u32 inField, u8 code_mode, u32 *fieldIndex)
38899 : {
38900 402066 : switch (node->sgprivate->tag) {
38901 : case TAG_MPEG4_Anchor:
38902 94 : return Anchor_get_field_index(node, inField, code_mode, fieldIndex);
38903 : case TAG_MPEG4_AnimationStream:
38904 203 : return AnimationStream_get_field_index(node, inField, code_mode, fieldIndex);
38905 : case TAG_MPEG4_Appearance:
38906 9746 : return Appearance_get_field_index(node, inField, code_mode, fieldIndex);
38907 : case TAG_MPEG4_AudioBuffer:
38908 87 : return AudioBuffer_get_field_index(node, inField, code_mode, fieldIndex);
38909 : case TAG_MPEG4_AudioClip:
38910 172 : return AudioClip_get_field_index(node, inField, code_mode, fieldIndex);
38911 : case TAG_MPEG4_AudioDelay:
38912 0 : return AudioDelay_get_field_index(node, inField, code_mode, fieldIndex);
38913 : case TAG_MPEG4_AudioFX:
38914 0 : return AudioFX_get_field_index(node, inField, code_mode, fieldIndex);
38915 : case TAG_MPEG4_AudioMix:
38916 0 : return AudioMix_get_field_index(node, inField, code_mode, fieldIndex);
38917 : case TAG_MPEG4_AudioSource:
38918 268 : return AudioSource_get_field_index(node, inField, code_mode, fieldIndex);
38919 : case TAG_MPEG4_AudioSwitch:
38920 0 : return AudioSwitch_get_field_index(node, inField, code_mode, fieldIndex);
38921 : case TAG_MPEG4_Background:
38922 142 : return Background_get_field_index(node, inField, code_mode, fieldIndex);
38923 : case TAG_MPEG4_Background2D:
38924 2756 : return Background2D_get_field_index(node, inField, code_mode, fieldIndex);
38925 : case TAG_MPEG4_Billboard:
38926 37 : return Billboard_get_field_index(node, inField, code_mode, fieldIndex);
38927 : case TAG_MPEG4_Bitmap:
38928 112 : return Bitmap_get_field_index(node, inField, code_mode, fieldIndex);
38929 : case TAG_MPEG4_Box:
38930 266 : return Box_get_field_index(node, inField, code_mode, fieldIndex);
38931 : case TAG_MPEG4_Circle:
38932 726 : return Circle_get_field_index(node, inField, code_mode, fieldIndex);
38933 : case TAG_MPEG4_Collision:
38934 49 : return Collision_get_field_index(node, inField, code_mode, fieldIndex);
38935 : case TAG_MPEG4_Color:
38936 56 : return Color_get_field_index(node, inField, code_mode, fieldIndex);
38937 : case TAG_MPEG4_ColorInterpolator:
38938 192 : return ColorInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
38939 : case TAG_MPEG4_CompositeTexture2D:
38940 113 : return CompositeTexture2D_get_field_index(node, inField, code_mode, fieldIndex);
38941 : case TAG_MPEG4_CompositeTexture3D:
38942 66 : return CompositeTexture3D_get_field_index(node, inField, code_mode, fieldIndex);
38943 : case TAG_MPEG4_Conditional:
38944 6603 : return Conditional_get_field_index(node, inField, code_mode, fieldIndex);
38945 : case TAG_MPEG4_Cone:
38946 123 : return Cone_get_field_index(node, inField, code_mode, fieldIndex);
38947 : case TAG_MPEG4_Coordinate:
38948 28 : return Coordinate_get_field_index(node, inField, code_mode, fieldIndex);
38949 : case TAG_MPEG4_Coordinate2D:
38950 1300 : return Coordinate2D_get_field_index(node, inField, code_mode, fieldIndex);
38951 : case TAG_MPEG4_CoordinateInterpolator:
38952 0 : return CoordinateInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
38953 : case TAG_MPEG4_CoordinateInterpolator2D:
38954 64 : return CoordinateInterpolator2D_get_field_index(node, inField, code_mode, fieldIndex);
38955 : case TAG_MPEG4_Curve2D:
38956 1475 : return Curve2D_get_field_index(node, inField, code_mode, fieldIndex);
38957 : case TAG_MPEG4_Cylinder:
38958 375 : return Cylinder_get_field_index(node, inField, code_mode, fieldIndex);
38959 : case TAG_MPEG4_CylinderSensor:
38960 94 : return CylinderSensor_get_field_index(node, inField, code_mode, fieldIndex);
38961 : case TAG_MPEG4_DirectionalLight:
38962 91 : return DirectionalLight_get_field_index(node, inField, code_mode, fieldIndex);
38963 : case TAG_MPEG4_DiscSensor:
38964 92 : return DiscSensor_get_field_index(node, inField, code_mode, fieldIndex);
38965 : case TAG_MPEG4_ElevationGrid:
38966 56 : return ElevationGrid_get_field_index(node, inField, code_mode, fieldIndex);
38967 : case TAG_MPEG4_Expression:
38968 0 : return Expression_get_field_index(node, inField, code_mode, fieldIndex);
38969 : case TAG_MPEG4_Extrusion:
38970 50 : return Extrusion_get_field_index(node, inField, code_mode, fieldIndex);
38971 : case TAG_MPEG4_Face:
38972 0 : return Face_get_field_index(node, inField, code_mode, fieldIndex);
38973 : case TAG_MPEG4_FaceDefMesh:
38974 0 : return FaceDefMesh_get_field_index(node, inField, code_mode, fieldIndex);
38975 : case TAG_MPEG4_FaceDefTables:
38976 0 : return FaceDefTables_get_field_index(node, inField, code_mode, fieldIndex);
38977 : case TAG_MPEG4_FaceDefTransform:
38978 0 : return FaceDefTransform_get_field_index(node, inField, code_mode, fieldIndex);
38979 : case TAG_MPEG4_FAP:
38980 0 : return FAP_get_field_index(node, inField, code_mode, fieldIndex);
38981 : case TAG_MPEG4_FDP:
38982 0 : return FDP_get_field_index(node, inField, code_mode, fieldIndex);
38983 : case TAG_MPEG4_FIT:
38984 0 : return FIT_get_field_index(node, inField, code_mode, fieldIndex);
38985 : case TAG_MPEG4_Fog:
38986 40 : return Fog_get_field_index(node, inField, code_mode, fieldIndex);
38987 : case TAG_MPEG4_FontStyle:
38988 8880 : return FontStyle_get_field_index(node, inField, code_mode, fieldIndex);
38989 : case TAG_MPEG4_Form:
38990 525 : return Form_get_field_index(node, inField, code_mode, fieldIndex);
38991 : case TAG_MPEG4_Group:
38992 546 : return Group_get_field_index(node, inField, code_mode, fieldIndex);
38993 : case TAG_MPEG4_ImageTexture:
38994 599 : return ImageTexture_get_field_index(node, inField, code_mode, fieldIndex);
38995 : case TAG_MPEG4_IndexedFaceSet:
38996 144 : return IndexedFaceSet_get_field_index(node, inField, code_mode, fieldIndex);
38997 : case TAG_MPEG4_IndexedFaceSet2D:
38998 1855 : return IndexedFaceSet2D_get_field_index(node, inField, code_mode, fieldIndex);
38999 : case TAG_MPEG4_IndexedLineSet:
39000 65 : return IndexedLineSet_get_field_index(node, inField, code_mode, fieldIndex);
39001 : case TAG_MPEG4_IndexedLineSet2D:
39002 520 : return IndexedLineSet2D_get_field_index(node, inField, code_mode, fieldIndex);
39003 : case TAG_MPEG4_Inline:
39004 84 : return Inline_get_field_index(node, inField, code_mode, fieldIndex);
39005 : case TAG_MPEG4_LOD:
39006 16 : return LOD_get_field_index(node, inField, code_mode, fieldIndex);
39007 : case TAG_MPEG4_Layer2D:
39008 461 : return Layer2D_get_field_index(node, inField, code_mode, fieldIndex);
39009 : case TAG_MPEG4_Layer3D:
39010 155 : return Layer3D_get_field_index(node, inField, code_mode, fieldIndex);
39011 : case TAG_MPEG4_Layout:
39012 8419 : return Layout_get_field_index(node, inField, code_mode, fieldIndex);
39013 : case TAG_MPEG4_LineProperties:
39014 844 : return LineProperties_get_field_index(node, inField, code_mode, fieldIndex);
39015 : case TAG_MPEG4_ListeningPoint:
39016 0 : return ListeningPoint_get_field_index(node, inField, code_mode, fieldIndex);
39017 : case TAG_MPEG4_Material:
39018 1435 : return Material_get_field_index(node, inField, code_mode, fieldIndex);
39019 : case TAG_MPEG4_Material2D:
39020 12442 : return Material2D_get_field_index(node, inField, code_mode, fieldIndex);
39021 : case TAG_MPEG4_MovieTexture:
39022 818 : return MovieTexture_get_field_index(node, inField, code_mode, fieldIndex);
39023 : case TAG_MPEG4_NavigationInfo:
39024 230 : return NavigationInfo_get_field_index(node, inField, code_mode, fieldIndex);
39025 : case TAG_MPEG4_Normal:
39026 0 : return Normal_get_field_index(node, inField, code_mode, fieldIndex);
39027 : case TAG_MPEG4_NormalInterpolator:
39028 0 : return NormalInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
39029 : case TAG_MPEG4_OrderedGroup:
39030 2486 : return OrderedGroup_get_field_index(node, inField, code_mode, fieldIndex);
39031 : case TAG_MPEG4_OrientationInterpolator:
39032 523 : return OrientationInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
39033 : case TAG_MPEG4_PixelTexture:
39034 44 : return PixelTexture_get_field_index(node, inField, code_mode, fieldIndex);
39035 : case TAG_MPEG4_PlaneSensor:
39036 99 : return PlaneSensor_get_field_index(node, inField, code_mode, fieldIndex);
39037 : case TAG_MPEG4_PlaneSensor2D:
39038 666 : return PlaneSensor2D_get_field_index(node, inField, code_mode, fieldIndex);
39039 : case TAG_MPEG4_PointLight:
39040 38 : return PointLight_get_field_index(node, inField, code_mode, fieldIndex);
39041 : case TAG_MPEG4_PointSet:
39042 9 : return PointSet_get_field_index(node, inField, code_mode, fieldIndex);
39043 : case TAG_MPEG4_PointSet2D:
39044 47 : return PointSet2D_get_field_index(node, inField, code_mode, fieldIndex);
39045 : case TAG_MPEG4_PositionInterpolator:
39046 352 : return PositionInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
39047 : case TAG_MPEG4_PositionInterpolator2D:
39048 1049 : return PositionInterpolator2D_get_field_index(node, inField, code_mode, fieldIndex);
39049 : case TAG_MPEG4_ProximitySensor2D:
39050 74 : return ProximitySensor2D_get_field_index(node, inField, code_mode, fieldIndex);
39051 : case TAG_MPEG4_ProximitySensor:
39052 51 : return ProximitySensor_get_field_index(node, inField, code_mode, fieldIndex);
39053 : case TAG_MPEG4_QuantizationParameter:
39054 730 : return QuantizationParameter_get_field_index(node, inField, code_mode, fieldIndex);
39055 : case TAG_MPEG4_Rectangle:
39056 1696 : return Rectangle_get_field_index(node, inField, code_mode, fieldIndex);
39057 : case TAG_MPEG4_ScalarInterpolator:
39058 1415 : return ScalarInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
39059 : case TAG_MPEG4_Script:
39060 1029 : return Script_get_field_index(node, inField, code_mode, fieldIndex);
39061 : case TAG_MPEG4_Shape:
39062 19604 : return Shape_get_field_index(node, inField, code_mode, fieldIndex);
39063 : case TAG_MPEG4_Sound:
39064 65 : return Sound_get_field_index(node, inField, code_mode, fieldIndex);
39065 : case TAG_MPEG4_Sound2D:
39066 121 : return Sound2D_get_field_index(node, inField, code_mode, fieldIndex);
39067 : case TAG_MPEG4_Sphere:
39068 72 : return Sphere_get_field_index(node, inField, code_mode, fieldIndex);
39069 : case TAG_MPEG4_SphereSensor:
39070 64 : return SphereSensor_get_field_index(node, inField, code_mode, fieldIndex);
39071 : case TAG_MPEG4_SpotLight:
39072 47 : return SpotLight_get_field_index(node, inField, code_mode, fieldIndex);
39073 : case TAG_MPEG4_Switch:
39074 716 : return Switch_get_field_index(node, inField, code_mode, fieldIndex);
39075 : case TAG_MPEG4_TermCap:
39076 0 : return TermCap_get_field_index(node, inField, code_mode, fieldIndex);
39077 : case TAG_MPEG4_Text:
39078 12639 : return Text_get_field_index(node, inField, code_mode, fieldIndex);
39079 : case TAG_MPEG4_TextureCoordinate:
39080 0 : return TextureCoordinate_get_field_index(node, inField, code_mode, fieldIndex);
39081 : case TAG_MPEG4_TextureTransform:
39082 234 : return TextureTransform_get_field_index(node, inField, code_mode, fieldIndex);
39083 : case TAG_MPEG4_TimeSensor:
39084 4863 : return TimeSensor_get_field_index(node, inField, code_mode, fieldIndex);
39085 : case TAG_MPEG4_TouchSensor:
39086 8835 : return TouchSensor_get_field_index(node, inField, code_mode, fieldIndex);
39087 : case TAG_MPEG4_Transform:
39088 3246 : return Transform_get_field_index(node, inField, code_mode, fieldIndex);
39089 : case TAG_MPEG4_Transform2D:
39090 35335 : return Transform2D_get_field_index(node, inField, code_mode, fieldIndex);
39091 : case TAG_MPEG4_Valuator:
39092 24731 : return Valuator_get_field_index(node, inField, code_mode, fieldIndex);
39093 : case TAG_MPEG4_Viewpoint:
39094 615 : return Viewpoint_get_field_index(node, inField, code_mode, fieldIndex);
39095 : case TAG_MPEG4_VisibilitySensor:
39096 39 : return VisibilitySensor_get_field_index(node, inField, code_mode, fieldIndex);
39097 : case TAG_MPEG4_Viseme:
39098 0 : return Viseme_get_field_index(node, inField, code_mode, fieldIndex);
39099 : case TAG_MPEG4_WorldInfo:
39100 4098 : return WorldInfo_get_field_index(node, inField, code_mode, fieldIndex);
39101 : case TAG_MPEG4_AcousticMaterial:
39102 0 : return AcousticMaterial_get_field_index(node, inField, code_mode, fieldIndex);
39103 : case TAG_MPEG4_AcousticScene:
39104 0 : return AcousticScene_get_field_index(node, inField, code_mode, fieldIndex);
39105 : case TAG_MPEG4_ApplicationWindow:
39106 0 : return ApplicationWindow_get_field_index(node, inField, code_mode, fieldIndex);
39107 : case TAG_MPEG4_BAP:
39108 0 : return BAP_get_field_index(node, inField, code_mode, fieldIndex);
39109 : case TAG_MPEG4_BDP:
39110 0 : return BDP_get_field_index(node, inField, code_mode, fieldIndex);
39111 : case TAG_MPEG4_Body:
39112 0 : return Body_get_field_index(node, inField, code_mode, fieldIndex);
39113 : case TAG_MPEG4_BodyDefTable:
39114 0 : return BodyDefTable_get_field_index(node, inField, code_mode, fieldIndex);
39115 : case TAG_MPEG4_BodySegmentConnectionHint:
39116 0 : return BodySegmentConnectionHint_get_field_index(node, inField, code_mode, fieldIndex);
39117 : case TAG_MPEG4_DirectiveSound:
39118 0 : return DirectiveSound_get_field_index(node, inField, code_mode, fieldIndex);
39119 : case TAG_MPEG4_Hierarchical3DMesh:
39120 0 : return Hierarchical3DMesh_get_field_index(node, inField, code_mode, fieldIndex);
39121 : case TAG_MPEG4_MaterialKey:
39122 27 : return MaterialKey_get_field_index(node, inField, code_mode, fieldIndex);
39123 : case TAG_MPEG4_PerceptualParameters:
39124 0 : return PerceptualParameters_get_field_index(node, inField, code_mode, fieldIndex);
39125 : case TAG_MPEG4_TemporalTransform:
39126 0 : return TemporalTransform_get_field_index(node, inField, code_mode, fieldIndex);
39127 : case TAG_MPEG4_TemporalGroup:
39128 0 : return TemporalGroup_get_field_index(node, inField, code_mode, fieldIndex);
39129 : case TAG_MPEG4_ServerCommand:
39130 0 : return ServerCommand_get_field_index(node, inField, code_mode, fieldIndex);
39131 : case TAG_MPEG4_InputSensor:
39132 48 : return InputSensor_get_field_index(node, inField, code_mode, fieldIndex);
39133 : case TAG_MPEG4_MatteTexture:
39134 0 : return MatteTexture_get_field_index(node, inField, code_mode, fieldIndex);
39135 : case TAG_MPEG4_MediaBuffer:
39136 0 : return MediaBuffer_get_field_index(node, inField, code_mode, fieldIndex);
39137 : case TAG_MPEG4_MediaControl:
39138 601 : return MediaControl_get_field_index(node, inField, code_mode, fieldIndex);
39139 : case TAG_MPEG4_MediaSensor:
39140 414 : return MediaSensor_get_field_index(node, inField, code_mode, fieldIndex);
39141 : case TAG_MPEG4_BitWrapper:
39142 0 : return BitWrapper_get_field_index(node, inField, code_mode, fieldIndex);
39143 : case TAG_MPEG4_CoordinateInterpolator4D:
39144 0 : return CoordinateInterpolator4D_get_field_index(node, inField, code_mode, fieldIndex);
39145 : case TAG_MPEG4_DepthImage:
39146 0 : return DepthImage_get_field_index(node, inField, code_mode, fieldIndex);
39147 : case TAG_MPEG4_FFD:
39148 0 : return FFD_get_field_index(node, inField, code_mode, fieldIndex);
39149 : case TAG_MPEG4_Implicit:
39150 0 : return Implicit_get_field_index(node, inField, code_mode, fieldIndex);
39151 : case TAG_MPEG4_XXLFM_Appearance:
39152 0 : return XXLFM_Appearance_get_field_index(node, inField, code_mode, fieldIndex);
39153 : case TAG_MPEG4_XXLFM_BlendList:
39154 0 : return XXLFM_BlendList_get_field_index(node, inField, code_mode, fieldIndex);
39155 : case TAG_MPEG4_XXLFM_FrameList:
39156 0 : return XXLFM_FrameList_get_field_index(node, inField, code_mode, fieldIndex);
39157 : case TAG_MPEG4_XXLFM_LightMap:
39158 0 : return XXLFM_LightMap_get_field_index(node, inField, code_mode, fieldIndex);
39159 : case TAG_MPEG4_XXLFM_SurfaceMapList:
39160 0 : return XXLFM_SurfaceMapList_get_field_index(node, inField, code_mode, fieldIndex);
39161 : case TAG_MPEG4_XXLFM_ViewMapList:
39162 0 : return XXLFM_ViewMapList_get_field_index(node, inField, code_mode, fieldIndex);
39163 : case TAG_MPEG4_MeshGrid:
39164 0 : return MeshGrid_get_field_index(node, inField, code_mode, fieldIndex);
39165 : case TAG_MPEG4_NonLinearDeformer:
39166 43 : return NonLinearDeformer_get_field_index(node, inField, code_mode, fieldIndex);
39167 : case TAG_MPEG4_NurbsCurve:
39168 0 : return NurbsCurve_get_field_index(node, inField, code_mode, fieldIndex);
39169 : case TAG_MPEG4_NurbsCurve2D:
39170 0 : return NurbsCurve2D_get_field_index(node, inField, code_mode, fieldIndex);
39171 : case TAG_MPEG4_NurbsSurface:
39172 0 : return NurbsSurface_get_field_index(node, inField, code_mode, fieldIndex);
39173 : case TAG_MPEG4_OctreeImage:
39174 0 : return OctreeImage_get_field_index(node, inField, code_mode, fieldIndex);
39175 : case TAG_MPEG4_XXParticles:
39176 0 : return XXParticles_get_field_index(node, inField, code_mode, fieldIndex);
39177 : case TAG_MPEG4_XXParticleInitBox:
39178 0 : return XXParticleInitBox_get_field_index(node, inField, code_mode, fieldIndex);
39179 : case TAG_MPEG4_XXPlanarObstacle:
39180 0 : return XXPlanarObstacle_get_field_index(node, inField, code_mode, fieldIndex);
39181 : case TAG_MPEG4_XXPointAttractor:
39182 0 : return XXPointAttractor_get_field_index(node, inField, code_mode, fieldIndex);
39183 : case TAG_MPEG4_PointTexture:
39184 0 : return PointTexture_get_field_index(node, inField, code_mode, fieldIndex);
39185 : case TAG_MPEG4_PositionAnimator:
39186 79 : return PositionAnimator_get_field_index(node, inField, code_mode, fieldIndex);
39187 : case TAG_MPEG4_PositionAnimator2D:
39188 79 : return PositionAnimator2D_get_field_index(node, inField, code_mode, fieldIndex);
39189 : case TAG_MPEG4_PositionInterpolator4D:
39190 0 : return PositionInterpolator4D_get_field_index(node, inField, code_mode, fieldIndex);
39191 : case TAG_MPEG4_ProceduralTexture:
39192 0 : return ProceduralTexture_get_field_index(node, inField, code_mode, fieldIndex);
39193 : case TAG_MPEG4_Quadric:
39194 0 : return Quadric_get_field_index(node, inField, code_mode, fieldIndex);
39195 : case TAG_MPEG4_SBBone:
39196 0 : return SBBone_get_field_index(node, inField, code_mode, fieldIndex);
39197 : case TAG_MPEG4_SBMuscle:
39198 0 : return SBMuscle_get_field_index(node, inField, code_mode, fieldIndex);
39199 : case TAG_MPEG4_SBSegment:
39200 0 : return SBSegment_get_field_index(node, inField, code_mode, fieldIndex);
39201 : case TAG_MPEG4_SBSite:
39202 0 : return SBSite_get_field_index(node, inField, code_mode, fieldIndex);
39203 : case TAG_MPEG4_SBSkinnedModel:
39204 0 : return SBSkinnedModel_get_field_index(node, inField, code_mode, fieldIndex);
39205 : case TAG_MPEG4_SBVCAnimation:
39206 0 : return SBVCAnimation_get_field_index(node, inField, code_mode, fieldIndex);
39207 : case TAG_MPEG4_ScalarAnimator:
39208 68 : return ScalarAnimator_get_field_index(node, inField, code_mode, fieldIndex);
39209 : case TAG_MPEG4_SimpleTexture:
39210 0 : return SimpleTexture_get_field_index(node, inField, code_mode, fieldIndex);
39211 : case TAG_MPEG4_SolidRep:
39212 0 : return SolidRep_get_field_index(node, inField, code_mode, fieldIndex);
39213 : case TAG_MPEG4_SubdivisionSurface:
39214 0 : return SubdivisionSurface_get_field_index(node, inField, code_mode, fieldIndex);
39215 : case TAG_MPEG4_SubdivSurfaceSector:
39216 0 : return SubdivSurfaceSector_get_field_index(node, inField, code_mode, fieldIndex);
39217 : case TAG_MPEG4_WaveletSubdivisionSurface:
39218 0 : return WaveletSubdivisionSurface_get_field_index(node, inField, code_mode, fieldIndex);
39219 : case TAG_MPEG4_Clipper2D:
39220 158 : return Clipper2D_get_field_index(node, inField, code_mode, fieldIndex);
39221 : case TAG_MPEG4_ColorTransform:
39222 494 : return ColorTransform_get_field_index(node, inField, code_mode, fieldIndex);
39223 : case TAG_MPEG4_Ellipse:
39224 14 : return Ellipse_get_field_index(node, inField, code_mode, fieldIndex);
39225 : case TAG_MPEG4_LinearGradient:
39226 291 : return LinearGradient_get_field_index(node, inField, code_mode, fieldIndex);
39227 : case TAG_MPEG4_PathLayout:
39228 290 : return PathLayout_get_field_index(node, inField, code_mode, fieldIndex);
39229 : case TAG_MPEG4_RadialGradient:
39230 436 : return RadialGradient_get_field_index(node, inField, code_mode, fieldIndex);
39231 : case TAG_MPEG4_SynthesizedTexture:
39232 0 : return SynthesizedTexture_get_field_index(node, inField, code_mode, fieldIndex);
39233 : case TAG_MPEG4_TransformMatrix2D:
39234 6546 : return TransformMatrix2D_get_field_index(node, inField, code_mode, fieldIndex);
39235 : case TAG_MPEG4_Viewport:
39236 523 : return Viewport_get_field_index(node, inField, code_mode, fieldIndex);
39237 : case TAG_MPEG4_XCurve2D:
39238 86 : return XCurve2D_get_field_index(node, inField, code_mode, fieldIndex);
39239 : case TAG_MPEG4_XFontStyle:
39240 0 : return XFontStyle_get_field_index(node, inField, code_mode, fieldIndex);
39241 : case TAG_MPEG4_XLineProperties:
39242 1253 : return XLineProperties_get_field_index(node, inField, code_mode, fieldIndex);
39243 : case TAG_MPEG4_AdvancedAudioBuffer:
39244 0 : return AdvancedAudioBuffer_get_field_index(node, inField, code_mode, fieldIndex);
39245 : case TAG_MPEG4_AudioChannelConfig:
39246 0 : return AudioChannelConfig_get_field_index(node, inField, code_mode, fieldIndex);
39247 : case TAG_MPEG4_DepthImageV2:
39248 0 : return DepthImageV2_get_field_index(node, inField, code_mode, fieldIndex);
39249 : case TAG_MPEG4_MorphShape:
39250 0 : return MorphShape_get_field_index(node, inField, code_mode, fieldIndex);
39251 : case TAG_MPEG4_MultiTexture:
39252 0 : return MultiTexture_get_field_index(node, inField, code_mode, fieldIndex);
39253 : case TAG_MPEG4_PointTextureV2:
39254 0 : return PointTextureV2_get_field_index(node, inField, code_mode, fieldIndex);
39255 : case TAG_MPEG4_SBVCAnimationV2:
39256 0 : return SBVCAnimationV2_get_field_index(node, inField, code_mode, fieldIndex);
39257 : case TAG_MPEG4_SimpleTextureV2:
39258 0 : return SimpleTextureV2_get_field_index(node, inField, code_mode, fieldIndex);
39259 : case TAG_MPEG4_SurroundingSound:
39260 0 : return SurroundingSound_get_field_index(node, inField, code_mode, fieldIndex);
39261 : case TAG_MPEG4_Transform3DAudio:
39262 0 : return Transform3DAudio_get_field_index(node, inField, code_mode, fieldIndex);
39263 : case TAG_MPEG4_WideSound:
39264 0 : return WideSound_get_field_index(node, inField, code_mode, fieldIndex);
39265 : case TAG_MPEG4_ScoreShape:
39266 0 : return ScoreShape_get_field_index(node, inField, code_mode, fieldIndex);
39267 : case TAG_MPEG4_MusicScore:
39268 0 : return MusicScore_get_field_index(node, inField, code_mode, fieldIndex);
39269 : case TAG_MPEG4_FootPrintSetNode:
39270 0 : return FootPrintSetNode_get_field_index(node, inField, code_mode, fieldIndex);
39271 : case TAG_MPEG4_FootPrintNode:
39272 0 : return FootPrintNode_get_field_index(node, inField, code_mode, fieldIndex);
39273 : case TAG_MPEG4_BuildingPartNode:
39274 0 : return BuildingPartNode_get_field_index(node, inField, code_mode, fieldIndex);
39275 : case TAG_MPEG4_RoofNode:
39276 0 : return RoofNode_get_field_index(node, inField, code_mode, fieldIndex);
39277 : case TAG_MPEG4_FacadeNode:
39278 0 : return FacadeNode_get_field_index(node, inField, code_mode, fieldIndex);
39279 : case TAG_MPEG4_Shadow:
39280 0 : return Shadow_get_field_index(node, inField, code_mode, fieldIndex);
39281 : case TAG_MPEG4_CacheTexture:
39282 62 : return CacheTexture_get_field_index(node, inField, code_mode, fieldIndex);
39283 : case TAG_MPEG4_EnvironmentTest:
39284 98 : return EnvironmentTest_get_field_index(node, inField, code_mode, fieldIndex);
39285 : case TAG_MPEG4_KeyNavigator:
39286 254 : return KeyNavigator_get_field_index(node, inField, code_mode, fieldIndex);
39287 : case TAG_MPEG4_SpacePartition:
39288 0 : return SpacePartition_get_field_index(node, inField, code_mode, fieldIndex);
39289 : case TAG_MPEG4_Storage:
39290 23 : return Storage_get_field_index(node, inField, code_mode, fieldIndex);
39291 : default:
39292 0 : return GF_BAD_PARAM;
39293 : }
39294 201033 : }
39295 :
39296 : Bool gf_sg_mpeg4_node_get_aq_info(GF_Node *node, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
39297 : {
39298 630 : switch (node->sgprivate->tag) {
39299 : case TAG_MPEG4_Anchor:
39300 0 : return Anchor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39301 : case TAG_MPEG4_AnimationStream:
39302 0 : return AnimationStream_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39303 : case TAG_MPEG4_Appearance:
39304 0 : return Appearance_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39305 : case TAG_MPEG4_AudioBuffer:
39306 0 : return AudioBuffer_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39307 : case TAG_MPEG4_AudioClip:
39308 0 : return AudioClip_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39309 : case TAG_MPEG4_AudioDelay:
39310 0 : return AudioDelay_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39311 : case TAG_MPEG4_AudioFX:
39312 0 : return AudioFX_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39313 : case TAG_MPEG4_AudioMix:
39314 0 : return AudioMix_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39315 : case TAG_MPEG4_AudioSource:
39316 0 : return AudioSource_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39317 : case TAG_MPEG4_AudioSwitch:
39318 0 : return AudioSwitch_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39319 : case TAG_MPEG4_Background:
39320 0 : return Background_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39321 : case TAG_MPEG4_Background2D:
39322 0 : return Background2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39323 : case TAG_MPEG4_Billboard:
39324 0 : return Billboard_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39325 : case TAG_MPEG4_Bitmap:
39326 0 : return Bitmap_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39327 : case TAG_MPEG4_Box:
39328 0 : return Box_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39329 : case TAG_MPEG4_Circle:
39330 0 : return Circle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39331 : case TAG_MPEG4_Collision:
39332 0 : return Collision_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39333 : case TAG_MPEG4_Color:
39334 0 : return Color_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39335 : case TAG_MPEG4_ColorInterpolator:
39336 0 : return ColorInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39337 : case TAG_MPEG4_CompositeTexture2D:
39338 0 : return CompositeTexture2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39339 : case TAG_MPEG4_CompositeTexture3D:
39340 0 : return CompositeTexture3D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39341 : case TAG_MPEG4_Conditional:
39342 0 : return Conditional_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39343 : case TAG_MPEG4_Cone:
39344 0 : return Cone_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39345 : case TAG_MPEG4_Coordinate:
39346 0 : return Coordinate_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39347 : case TAG_MPEG4_Coordinate2D:
39348 294 : return Coordinate2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39349 : case TAG_MPEG4_CoordinateInterpolator:
39350 0 : return CoordinateInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39351 : case TAG_MPEG4_CoordinateInterpolator2D:
39352 0 : return CoordinateInterpolator2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39353 : case TAG_MPEG4_Curve2D:
39354 0 : return Curve2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39355 : case TAG_MPEG4_Cylinder:
39356 0 : return Cylinder_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39357 : case TAG_MPEG4_CylinderSensor:
39358 0 : return CylinderSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39359 : case TAG_MPEG4_DirectionalLight:
39360 0 : return DirectionalLight_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39361 : case TAG_MPEG4_DiscSensor:
39362 0 : return DiscSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39363 : case TAG_MPEG4_ElevationGrid:
39364 0 : return ElevationGrid_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39365 : case TAG_MPEG4_Expression:
39366 0 : return Expression_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39367 : case TAG_MPEG4_Extrusion:
39368 0 : return Extrusion_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39369 : case TAG_MPEG4_Face:
39370 0 : return Face_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39371 : case TAG_MPEG4_FaceDefMesh:
39372 0 : return FaceDefMesh_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39373 : case TAG_MPEG4_FaceDefTables:
39374 0 : return FaceDefTables_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39375 : case TAG_MPEG4_FaceDefTransform:
39376 0 : return FaceDefTransform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39377 : case TAG_MPEG4_FAP:
39378 0 : return FAP_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39379 : case TAG_MPEG4_FDP:
39380 0 : return FDP_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39381 : case TAG_MPEG4_FIT:
39382 0 : return FIT_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39383 : case TAG_MPEG4_Fog:
39384 0 : return Fog_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39385 : case TAG_MPEG4_FontStyle:
39386 0 : return FontStyle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39387 : case TAG_MPEG4_Form:
39388 0 : return Form_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39389 : case TAG_MPEG4_Group:
39390 0 : return Group_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39391 : case TAG_MPEG4_ImageTexture:
39392 0 : return ImageTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39393 : case TAG_MPEG4_IndexedFaceSet:
39394 0 : return IndexedFaceSet_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39395 : case TAG_MPEG4_IndexedFaceSet2D:
39396 0 : return IndexedFaceSet2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39397 : case TAG_MPEG4_IndexedLineSet:
39398 0 : return IndexedLineSet_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39399 : case TAG_MPEG4_IndexedLineSet2D:
39400 0 : return IndexedLineSet2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39401 : case TAG_MPEG4_Inline:
39402 0 : return Inline_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39403 : case TAG_MPEG4_LOD:
39404 0 : return LOD_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39405 : case TAG_MPEG4_Layer2D:
39406 0 : return Layer2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39407 : case TAG_MPEG4_Layer3D:
39408 0 : return Layer3D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39409 : case TAG_MPEG4_Layout:
39410 0 : return Layout_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39411 : case TAG_MPEG4_LineProperties:
39412 0 : return LineProperties_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39413 : case TAG_MPEG4_ListeningPoint:
39414 0 : return ListeningPoint_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39415 : case TAG_MPEG4_Material:
39416 0 : return Material_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39417 : case TAG_MPEG4_Material2D:
39418 14 : return Material2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39419 : case TAG_MPEG4_MovieTexture:
39420 0 : return MovieTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39421 : case TAG_MPEG4_NavigationInfo:
39422 0 : return NavigationInfo_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39423 : case TAG_MPEG4_Normal:
39424 0 : return Normal_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39425 : case TAG_MPEG4_NormalInterpolator:
39426 0 : return NormalInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39427 : case TAG_MPEG4_OrderedGroup:
39428 0 : return OrderedGroup_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39429 : case TAG_MPEG4_OrientationInterpolator:
39430 0 : return OrientationInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39431 : case TAG_MPEG4_PixelTexture:
39432 0 : return PixelTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39433 : case TAG_MPEG4_PlaneSensor:
39434 0 : return PlaneSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39435 : case TAG_MPEG4_PlaneSensor2D:
39436 0 : return PlaneSensor2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39437 : case TAG_MPEG4_PointLight:
39438 0 : return PointLight_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39439 : case TAG_MPEG4_PointSet:
39440 0 : return PointSet_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39441 : case TAG_MPEG4_PointSet2D:
39442 0 : return PointSet2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39443 : case TAG_MPEG4_PositionInterpolator:
39444 0 : return PositionInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39445 : case TAG_MPEG4_PositionInterpolator2D:
39446 0 : return PositionInterpolator2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39447 : case TAG_MPEG4_ProximitySensor2D:
39448 0 : return ProximitySensor2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39449 : case TAG_MPEG4_ProximitySensor:
39450 0 : return ProximitySensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39451 : case TAG_MPEG4_QuantizationParameter:
39452 0 : return QuantizationParameter_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39453 : case TAG_MPEG4_Rectangle:
39454 0 : return Rectangle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39455 : case TAG_MPEG4_ScalarInterpolator:
39456 0 : return ScalarInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39457 : case TAG_MPEG4_Script:
39458 0 : return Script_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39459 : case TAG_MPEG4_Shape:
39460 0 : return Shape_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39461 : case TAG_MPEG4_Sound:
39462 0 : return Sound_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39463 : case TAG_MPEG4_Sound2D:
39464 0 : return Sound2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39465 : case TAG_MPEG4_Sphere:
39466 0 : return Sphere_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39467 : case TAG_MPEG4_SphereSensor:
39468 0 : return SphereSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39469 : case TAG_MPEG4_SpotLight:
39470 0 : return SpotLight_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39471 : case TAG_MPEG4_Switch:
39472 0 : return Switch_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39473 : case TAG_MPEG4_TermCap:
39474 0 : return TermCap_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39475 : case TAG_MPEG4_Text:
39476 0 : return Text_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39477 : case TAG_MPEG4_TextureCoordinate:
39478 0 : return TextureCoordinate_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39479 : case TAG_MPEG4_TextureTransform:
39480 0 : return TextureTransform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39481 : case TAG_MPEG4_TimeSensor:
39482 0 : return TimeSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39483 : case TAG_MPEG4_TouchSensor:
39484 0 : return TouchSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39485 : case TAG_MPEG4_Transform:
39486 0 : return Transform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39487 : case TAG_MPEG4_Transform2D:
39488 7 : return Transform2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39489 : case TAG_MPEG4_Valuator:
39490 0 : return Valuator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39491 : case TAG_MPEG4_Viewpoint:
39492 0 : return Viewpoint_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39493 : case TAG_MPEG4_VisibilitySensor:
39494 0 : return VisibilitySensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39495 : case TAG_MPEG4_Viseme:
39496 0 : return Viseme_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39497 : case TAG_MPEG4_WorldInfo:
39498 0 : return WorldInfo_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39499 : case TAG_MPEG4_AcousticMaterial:
39500 0 : return AcousticMaterial_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39501 : case TAG_MPEG4_AcousticScene:
39502 0 : return AcousticScene_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39503 : case TAG_MPEG4_ApplicationWindow:
39504 0 : return ApplicationWindow_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39505 : case TAG_MPEG4_BAP:
39506 0 : return BAP_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39507 : case TAG_MPEG4_BDP:
39508 0 : return BDP_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39509 : case TAG_MPEG4_Body:
39510 0 : return Body_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39511 : case TAG_MPEG4_BodyDefTable:
39512 0 : return BodyDefTable_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39513 : case TAG_MPEG4_BodySegmentConnectionHint:
39514 0 : return BodySegmentConnectionHint_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39515 : case TAG_MPEG4_DirectiveSound:
39516 0 : return DirectiveSound_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39517 : case TAG_MPEG4_Hierarchical3DMesh:
39518 0 : return Hierarchical3DMesh_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39519 : case TAG_MPEG4_MaterialKey:
39520 0 : return MaterialKey_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39521 : case TAG_MPEG4_PerceptualParameters:
39522 0 : return PerceptualParameters_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39523 : case TAG_MPEG4_TemporalTransform:
39524 0 : return TemporalTransform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39525 : case TAG_MPEG4_TemporalGroup:
39526 0 : return TemporalGroup_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39527 : case TAG_MPEG4_ServerCommand:
39528 0 : return ServerCommand_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39529 : case TAG_MPEG4_InputSensor:
39530 0 : return InputSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39531 : case TAG_MPEG4_MatteTexture:
39532 0 : return MatteTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39533 : case TAG_MPEG4_MediaBuffer:
39534 0 : return MediaBuffer_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39535 : case TAG_MPEG4_MediaControl:
39536 0 : return MediaControl_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39537 : case TAG_MPEG4_MediaSensor:
39538 0 : return MediaSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39539 : case TAG_MPEG4_BitWrapper:
39540 0 : return BitWrapper_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39541 : case TAG_MPEG4_CoordinateInterpolator4D:
39542 0 : return CoordinateInterpolator4D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39543 : case TAG_MPEG4_DepthImage:
39544 0 : return DepthImage_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39545 : case TAG_MPEG4_FFD:
39546 0 : return FFD_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39547 : case TAG_MPEG4_Implicit:
39548 0 : return Implicit_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39549 : case TAG_MPEG4_XXLFM_Appearance:
39550 0 : return XXLFM_Appearance_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39551 : case TAG_MPEG4_XXLFM_BlendList:
39552 0 : return XXLFM_BlendList_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39553 : case TAG_MPEG4_XXLFM_FrameList:
39554 0 : return XXLFM_FrameList_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39555 : case TAG_MPEG4_XXLFM_LightMap:
39556 0 : return XXLFM_LightMap_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39557 : case TAG_MPEG4_XXLFM_SurfaceMapList:
39558 0 : return XXLFM_SurfaceMapList_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39559 : case TAG_MPEG4_XXLFM_ViewMapList:
39560 0 : return XXLFM_ViewMapList_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39561 : case TAG_MPEG4_MeshGrid:
39562 0 : return MeshGrid_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39563 : case TAG_MPEG4_NonLinearDeformer:
39564 0 : return NonLinearDeformer_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39565 : case TAG_MPEG4_NurbsCurve:
39566 0 : return NurbsCurve_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39567 : case TAG_MPEG4_NurbsCurve2D:
39568 0 : return NurbsCurve2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39569 : case TAG_MPEG4_NurbsSurface:
39570 0 : return NurbsSurface_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39571 : case TAG_MPEG4_OctreeImage:
39572 0 : return OctreeImage_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39573 : case TAG_MPEG4_XXParticles:
39574 0 : return XXParticles_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39575 : case TAG_MPEG4_XXParticleInitBox:
39576 0 : return XXParticleInitBox_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39577 : case TAG_MPEG4_XXPlanarObstacle:
39578 0 : return XXPlanarObstacle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39579 : case TAG_MPEG4_XXPointAttractor:
39580 0 : return XXPointAttractor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39581 : case TAG_MPEG4_PointTexture:
39582 0 : return PointTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39583 : case TAG_MPEG4_PositionAnimator:
39584 0 : return PositionAnimator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39585 : case TAG_MPEG4_PositionAnimator2D:
39586 0 : return PositionAnimator2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39587 : case TAG_MPEG4_PositionInterpolator4D:
39588 0 : return PositionInterpolator4D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39589 : case TAG_MPEG4_ProceduralTexture:
39590 0 : return ProceduralTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39591 : case TAG_MPEG4_Quadric:
39592 0 : return Quadric_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39593 : case TAG_MPEG4_SBBone:
39594 0 : return SBBone_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39595 : case TAG_MPEG4_SBMuscle:
39596 0 : return SBMuscle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39597 : case TAG_MPEG4_SBSegment:
39598 0 : return SBSegment_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39599 : case TAG_MPEG4_SBSite:
39600 0 : return SBSite_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39601 : case TAG_MPEG4_SBSkinnedModel:
39602 0 : return SBSkinnedModel_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39603 : case TAG_MPEG4_SBVCAnimation:
39604 0 : return SBVCAnimation_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39605 : case TAG_MPEG4_ScalarAnimator:
39606 0 : return ScalarAnimator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39607 : case TAG_MPEG4_SimpleTexture:
39608 0 : return SimpleTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39609 : case TAG_MPEG4_SolidRep:
39610 0 : return SolidRep_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39611 : case TAG_MPEG4_SubdivisionSurface:
39612 0 : return SubdivisionSurface_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39613 : case TAG_MPEG4_SubdivSurfaceSector:
39614 0 : return SubdivSurfaceSector_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39615 : case TAG_MPEG4_WaveletSubdivisionSurface:
39616 0 : return WaveletSubdivisionSurface_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39617 : case TAG_MPEG4_Clipper2D:
39618 0 : return Clipper2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39619 : case TAG_MPEG4_ColorTransform:
39620 0 : return ColorTransform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39621 : case TAG_MPEG4_Ellipse:
39622 0 : return Ellipse_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39623 : case TAG_MPEG4_LinearGradient:
39624 0 : return LinearGradient_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39625 : case TAG_MPEG4_PathLayout:
39626 0 : return PathLayout_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39627 : case TAG_MPEG4_RadialGradient:
39628 0 : return RadialGradient_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39629 : case TAG_MPEG4_SynthesizedTexture:
39630 0 : return SynthesizedTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39631 : case TAG_MPEG4_TransformMatrix2D:
39632 0 : return TransformMatrix2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39633 : case TAG_MPEG4_Viewport:
39634 0 : return Viewport_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39635 : case TAG_MPEG4_XCurve2D:
39636 0 : return XCurve2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39637 : case TAG_MPEG4_XFontStyle:
39638 0 : return XFontStyle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39639 : case TAG_MPEG4_XLineProperties:
39640 0 : return XLineProperties_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39641 : case TAG_MPEG4_AdvancedAudioBuffer:
39642 0 : return AdvancedAudioBuffer_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39643 : case TAG_MPEG4_AudioChannelConfig:
39644 0 : return AudioChannelConfig_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39645 : case TAG_MPEG4_DepthImageV2:
39646 0 : return DepthImageV2_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39647 : case TAG_MPEG4_MorphShape:
39648 0 : return MorphShape_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39649 : case TAG_MPEG4_MultiTexture:
39650 0 : return MultiTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39651 : case TAG_MPEG4_PointTextureV2:
39652 0 : return PointTextureV2_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39653 : case TAG_MPEG4_SBVCAnimationV2:
39654 0 : return SBVCAnimationV2_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39655 : case TAG_MPEG4_SimpleTextureV2:
39656 0 : return SimpleTextureV2_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39657 : case TAG_MPEG4_SurroundingSound:
39658 0 : return SurroundingSound_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39659 : case TAG_MPEG4_Transform3DAudio:
39660 0 : return Transform3DAudio_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39661 : case TAG_MPEG4_WideSound:
39662 0 : return WideSound_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39663 : case TAG_MPEG4_ScoreShape:
39664 0 : return ScoreShape_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39665 : case TAG_MPEG4_MusicScore:
39666 0 : return MusicScore_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39667 : case TAG_MPEG4_FootPrintSetNode:
39668 0 : return FootPrintSetNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39669 : case TAG_MPEG4_FootPrintNode:
39670 0 : return FootPrintNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39671 : case TAG_MPEG4_BuildingPartNode:
39672 0 : return BuildingPartNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39673 : case TAG_MPEG4_RoofNode:
39674 0 : return RoofNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39675 : case TAG_MPEG4_FacadeNode:
39676 0 : return FacadeNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39677 : case TAG_MPEG4_Shadow:
39678 0 : return Shadow_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39679 : case TAG_MPEG4_CacheTexture:
39680 0 : return CacheTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39681 : case TAG_MPEG4_EnvironmentTest:
39682 0 : return EnvironmentTest_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39683 : case TAG_MPEG4_KeyNavigator:
39684 0 : return KeyNavigator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39685 : case TAG_MPEG4_SpacePartition:
39686 0 : return SpacePartition_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39687 : case TAG_MPEG4_Storage:
39688 0 : return Storage_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39689 : default:
39690 0 : return 0;
39691 : }
39692 315 : }
39693 :
39694 : u32 gf_sg_mpeg4_node_get_child_ndt(GF_Node *node)
39695 : {
39696 546 : switch (node->sgprivate->tag) {
39697 : case TAG_MPEG4_Anchor:
39698 0 : return NDT_SF3DNode;
39699 : case TAG_MPEG4_AudioBuffer:
39700 0 : return NDT_SFAudioNode;
39701 : case TAG_MPEG4_AudioDelay:
39702 0 : return NDT_SFAudioNode;
39703 : case TAG_MPEG4_AudioFX:
39704 0 : return NDT_SFAudioNode;
39705 : case TAG_MPEG4_AudioMix:
39706 0 : return NDT_SFAudioNode;
39707 : case TAG_MPEG4_AudioSource:
39708 0 : return NDT_SFAudioNode;
39709 : case TAG_MPEG4_AudioSwitch:
39710 0 : return NDT_SFAudioNode;
39711 : case TAG_MPEG4_Billboard:
39712 0 : return NDT_SF3DNode;
39713 : case TAG_MPEG4_Collision:
39714 0 : return NDT_SF3DNode;
39715 : case TAG_MPEG4_CompositeTexture2D:
39716 0 : return NDT_SF2DNode;
39717 : case TAG_MPEG4_CompositeTexture3D:
39718 0 : return NDT_SF3DNode;
39719 : case TAG_MPEG4_Face:
39720 0 : return NDT_SF3DNode;
39721 : case TAG_MPEG4_FaceDefTables:
39722 0 : return NDT_SFFaceDefMeshNode;
39723 : case TAG_MPEG4_FDP:
39724 0 : return NDT_SFFaceDefTablesNode;
39725 : case TAG_MPEG4_Form:
39726 0 : return NDT_SF2DNode;
39727 : case TAG_MPEG4_Group:
39728 0 : return NDT_SF3DNode;
39729 : case TAG_MPEG4_LOD:
39730 0 : return NDT_SF3DNode;
39731 : case TAG_MPEG4_Layer2D:
39732 0 : return NDT_SF2DNode;
39733 : case TAG_MPEG4_Layer3D:
39734 0 : return NDT_SF3DNode;
39735 : case TAG_MPEG4_Layout:
39736 0 : return NDT_SF2DNode;
39737 : case TAG_MPEG4_OrderedGroup:
39738 63 : return NDT_SF3DNode;
39739 : case TAG_MPEG4_Switch:
39740 0 : return NDT_SF3DNode;
39741 : case TAG_MPEG4_Transform:
39742 0 : return NDT_SF3DNode;
39743 : case TAG_MPEG4_Transform2D:
39744 210 : return NDT_SF2DNode;
39745 : case TAG_MPEG4_BDP:
39746 0 : return NDT_SFBodyDefTableNode;
39747 : case TAG_MPEG4_Body:
39748 0 : return NDT_SF3DNode;
39749 : case TAG_MPEG4_TemporalTransform:
39750 0 : return NDT_SF3DNode;
39751 : case TAG_MPEG4_TemporalGroup:
39752 0 : return NDT_SFTemporalNode;
39753 : case TAG_MPEG4_FFD:
39754 0 : return NDT_SF3DNode;
39755 : case TAG_MPEG4_XXLFM_Appearance:
39756 0 : return NDT_SFLightMapNode;
39757 : case TAG_MPEG4_OctreeImage:
39758 0 : return NDT_SFDepthImageNode;
39759 : case TAG_MPEG4_XXParticles:
39760 0 : return NDT_SFInfluenceNode;
39761 : case TAG_MPEG4_SBBone:
39762 0 : return NDT_SF3DNode;
39763 : case TAG_MPEG4_SBSegment:
39764 0 : return NDT_SF3DNode;
39765 : case TAG_MPEG4_SBSite:
39766 0 : return NDT_SF3DNode;
39767 : case TAG_MPEG4_SBSkinnedModel:
39768 0 : return NDT_SFSBBoneNode;
39769 : case TAG_MPEG4_SBVCAnimation:
39770 0 : return NDT_SF3DNode;
39771 : case TAG_MPEG4_SubdivisionSurface:
39772 0 : return NDT_SFSubdivSurfaceSectorNode;
39773 : case TAG_MPEG4_Clipper2D:
39774 0 : return NDT_SF2DNode;
39775 : case TAG_MPEG4_ColorTransform:
39776 0 : return NDT_SF3DNode;
39777 : case TAG_MPEG4_PathLayout:
39778 0 : return NDT_SF2DNode;
39779 : case TAG_MPEG4_TransformMatrix2D:
39780 0 : return NDT_SF2DNode;
39781 : case TAG_MPEG4_AdvancedAudioBuffer:
39782 0 : return NDT_SFAudioNode;
39783 : case TAG_MPEG4_AudioChannelConfig:
39784 0 : return NDT_SFAudioNode;
39785 : case TAG_MPEG4_MorphShape:
39786 0 : return NDT_SF3DNode;
39787 : case TAG_MPEG4_MultiTexture:
39788 0 : return NDT_SFTextureNode;
39789 : case TAG_MPEG4_SBVCAnimationV2:
39790 0 : return NDT_SF3DNode;
39791 : case TAG_MPEG4_Transform3DAudio:
39792 0 : return NDT_SF3DNode;
39793 : case TAG_MPEG4_FootPrintSetNode:
39794 0 : return NDT_SFGeometryNode;
39795 : case TAG_MPEG4_BuildingPartNode:
39796 0 : return NDT_SFGeometryNode;
39797 : case TAG_MPEG4_FacadeNode:
39798 0 : return NDT_SFGeometryNode;
39799 : case TAG_MPEG4_Shadow:
39800 0 : return NDT_SF3DNode;
39801 : case TAG_MPEG4_SpacePartition:
39802 0 : return NDT_SF3DNode;
39803 : default:
39804 0 : return 0;
39805 : }
39806 273 : }
39807 :
39808 :
39809 : GF_EXPORT
39810 : u32 gf_node_mpeg4_type_by_class_name(const char *node_name)
39811 : {
39812 189688 : if(!node_name) return 0;
39813 94874 : if (!strcmp(node_name, "Anchor")) return TAG_MPEG4_Anchor;
39814 94850 : if (!strcmp(node_name, "AnimationStream")) return TAG_MPEG4_AnimationStream;
39815 101668 : if (!strcmp(node_name, "Appearance")) return TAG_MPEG4_Appearance;
39816 87894 : if (!strcmp(node_name, "AudioBuffer")) return TAG_MPEG4_AudioBuffer;
39817 87912 : if (!strcmp(node_name, "AudioClip")) return TAG_MPEG4_AudioClip;
39818 87852 : if (!strcmp(node_name, "AudioDelay")) return TAG_MPEG4_AudioDelay;
39819 87852 : if (!strcmp(node_name, "AudioFX")) return TAG_MPEG4_AudioFX;
39820 87852 : if (!strcmp(node_name, "AudioMix")) return TAG_MPEG4_AudioMix;
39821 87895 : if (!strcmp(node_name, "AudioSource")) return TAG_MPEG4_AudioSource;
39822 87809 : if (!strcmp(node_name, "AudioSwitch")) return TAG_MPEG4_AudioSwitch;
39823 87831 : if (!strcmp(node_name, "Background")) return TAG_MPEG4_Background;
39824 89515 : if (!strcmp(node_name, "Background2D")) return TAG_MPEG4_Background2D;
39825 86077 : if (!strcmp(node_name, "Billboard")) return TAG_MPEG4_Billboard;
39826 86223 : if (!strcmp(node_name, "Bitmap")) return TAG_MPEG4_Bitmap;
39827 86117 : if (!strcmp(node_name, "Box")) return TAG_MPEG4_Box;
39828 86273 : if (!strcmp(node_name, "Circle")) return TAG_MPEG4_Circle;
39829 84941 : if (!strcmp(node_name, "Collision")) return TAG_MPEG4_Collision;
39830 84969 : if (!strcmp(node_name, "Color")) return TAG_MPEG4_Color;
39831 84901 : if (!strcmp(node_name, "ColorInterpolator")) return TAG_MPEG4_ColorInterpolator;
39832 84862 : if (!strcmp(node_name, "CompositeTexture2D")) return TAG_MPEG4_CompositeTexture2D;
39833 84808 : if (!strcmp(node_name, "CompositeTexture3D")) return TAG_MPEG4_CompositeTexture3D;
39834 87524 : if (!strcmp(node_name, "Conditional")) return TAG_MPEG4_Conditional;
39835 82080 : if (!strcmp(node_name, "Cone")) return TAG_MPEG4_Cone;
39836 82040 : if (!strcmp(node_name, "Coordinate")) return TAG_MPEG4_Coordinate;
39837 83025 : if (!strcmp(node_name, "Coordinate2D")) return TAG_MPEG4_Coordinate2D;
39838 80927 : if (!strcmp(node_name, "CoordinateInterpolator")) return TAG_MPEG4_CoordinateInterpolator;
39839 80939 : if (!strcmp(node_name, "CoordinateInterpolator2D")) return TAG_MPEG4_CoordinateInterpolator2D;
39840 81285 : if (!strcmp(node_name, "Curve2D")) return TAG_MPEG4_Curve2D;
39841 80635 : if (!strcmp(node_name, "Cylinder")) return TAG_MPEG4_Cylinder;
39842 80461 : if (!strcmp(node_name, "CylinderSensor")) return TAG_MPEG4_CylinderSensor;
39843 80479 : if (!strcmp(node_name, "DirectionalLight")) return TAG_MPEG4_DirectionalLight;
39844 80437 : if (!strcmp(node_name, "DiscSensor")) return TAG_MPEG4_DiscSensor;
39845 80407 : if (!strcmp(node_name, "ElevationGrid")) return TAG_MPEG4_ElevationGrid;
39846 80395 : if (!strcmp(node_name, "Expression")) return TAG_MPEG4_Expression;
39847 80401 : if (!strcmp(node_name, "Extrusion")) return TAG_MPEG4_Extrusion;
39848 80389 : if (!strcmp(node_name, "Face")) return TAG_MPEG4_Face;
39849 80389 : if (!strcmp(node_name, "FaceDefMesh")) return TAG_MPEG4_FaceDefMesh;
39850 80389 : if (!strcmp(node_name, "FaceDefTables")) return TAG_MPEG4_FaceDefTables;
39851 80389 : if (!strcmp(node_name, "FaceDefTransform")) return TAG_MPEG4_FaceDefTransform;
39852 80389 : if (!strcmp(node_name, "FAP")) return TAG_MPEG4_FAP;
39853 80389 : if (!strcmp(node_name, "FDP")) return TAG_MPEG4_FDP;
39854 80389 : if (!strcmp(node_name, "FIT")) return TAG_MPEG4_FIT;
39855 80395 : if (!strcmp(node_name, "Fog")) return TAG_MPEG4_Fog;
39856 83623 : if (!strcmp(node_name, "FontStyle")) return TAG_MPEG4_FontStyle;
39857 77245 : if (!strcmp(node_name, "Form")) return TAG_MPEG4_Form;
39858 77533 : if (!strcmp(node_name, "Group")) return TAG_MPEG4_Group;
39859 76864 : if (!strcmp(node_name, "ImageTexture")) return TAG_MPEG4_ImageTexture;
39860 76252 : if (!strcmp(node_name, "IndexedFaceSet")) return TAG_MPEG4_IndexedFaceSet;
39861 76693 : if (!strcmp(node_name, "IndexedFaceSet2D")) return TAG_MPEG4_IndexedFaceSet2D;
39862 75751 : if (!strcmp(node_name, "IndexedLineSet")) return TAG_MPEG4_IndexedLineSet;
39863 75936 : if (!strcmp(node_name, "IndexedLineSet2D")) return TAG_MPEG4_IndexedLineSet2D;
39864 75627 : if (!strcmp(node_name, "Inline")) return TAG_MPEG4_Inline;
39865 75415 : if (!strcmp(node_name, "LOD")) return TAG_MPEG4_LOD;
39866 75541 : if (!strcmp(node_name, "Layer2D")) return TAG_MPEG4_Layer2D;
39867 75295 : if (!strcmp(node_name, "Layer3D")) return TAG_MPEG4_Layer3D;
39868 76075 : if (!strcmp(node_name, "Layout")) return TAG_MPEG4_Layout;
39869 74666 : if (!strcmp(node_name, "LineProperties")) return TAG_MPEG4_LineProperties;
39870 74124 : if (!strcmp(node_name, "ListeningPoint")) return TAG_MPEG4_ListeningPoint;
39871 74538 : if (!strcmp(node_name, "Material")) return TAG_MPEG4_Material;
39872 77170 : if (!strcmp(node_name, "Material2D")) return TAG_MPEG4_Material2D;
39873 70415 : if (!strcmp(node_name, "MovieTexture")) return TAG_MPEG4_MovieTexture;
39874 70173 : if (!strcmp(node_name, "NavigationInfo")) return TAG_MPEG4_NavigationInfo;
39875 69997 : if (!strcmp(node_name, "Normal")) return TAG_MPEG4_Normal;
39876 69997 : if (!strcmp(node_name, "NormalInterpolator")) return TAG_MPEG4_NormalInterpolator;
39877 71502 : if (!strcmp(node_name, "OrderedGroup")) return TAG_MPEG4_OrderedGroup;
39878 68588 : if (!strcmp(node_name, "OrientationInterpolator")) return TAG_MPEG4_OrientationInterpolator;
39879 68420 : if (!strcmp(node_name, "PixelTexture")) return TAG_MPEG4_PixelTexture;
39880 68378 : if (!strcmp(node_name, "PlaneSensor")) return TAG_MPEG4_PlaneSensor;
39881 68460 : if (!strcmp(node_name, "PlaneSensor2D")) return TAG_MPEG4_PlaneSensor2D;
39882 68278 : if (!strcmp(node_name, "PointLight")) return TAG_MPEG4_PointLight;
39883 68272 : if (!strcmp(node_name, "PointSet")) return TAG_MPEG4_PointSet;
39884 68291 : if (!strcmp(node_name, "PointSet2D")) return TAG_MPEG4_PointSet2D;
39885 68295 : if (!strcmp(node_name, "PositionInterpolator")) return TAG_MPEG4_PositionInterpolator;
39886 68367 : if (!strcmp(node_name, "PositionInterpolator2D")) return TAG_MPEG4_PositionInterpolator2D;
39887 67971 : if (!strcmp(node_name, "ProximitySensor2D")) return TAG_MPEG4_ProximitySensor2D;
39888 67953 : if (!strcmp(node_name, "ProximitySensor")) return TAG_MPEG4_ProximitySensor;
39889 67983 : if (!strcmp(node_name, "QuantizationParameter")) return TAG_MPEG4_QuantizationParameter;
39890 69670 : if (!strcmp(node_name, "Rectangle")) return TAG_MPEG4_Rectangle;
39891 66384 : if (!strcmp(node_name, "ScalarInterpolator")) return TAG_MPEG4_ScalarInterpolator;
39892 66053 : if (!strcmp(node_name, "Script")) return TAG_MPEG4_Script;
39893 77228 : if (!strcmp(node_name, "Shape")) return TAG_MPEG4_Shape;
39894 54166 : if (!strcmp(node_name, "Sound")) return TAG_MPEG4_Sound;
39895 54207 : if (!strcmp(node_name, "Sound2D")) return TAG_MPEG4_Sound2D;
39896 54143 : if (!strcmp(node_name, "Sphere")) return TAG_MPEG4_Sphere;
39897 54017 : if (!strcmp(node_name, "SphereSensor")) return TAG_MPEG4_SphereSensor;
39898 54011 : if (!strcmp(node_name, "SpotLight")) return TAG_MPEG4_SpotLight;
39899 54180 : if (!strcmp(node_name, "Switch")) return TAG_MPEG4_Switch;
39900 53818 : if (!strcmp(node_name, "TermCap")) return TAG_MPEG4_TermCap;
39901 57936 : if (!strcmp(node_name, "Text")) return TAG_MPEG4_Text;
39902 49700 : if (!strcmp(node_name, "TextureCoordinate")) return TAG_MPEG4_TextureCoordinate;
39903 49778 : if (!strcmp(node_name, "TextureTransform")) return TAG_MPEG4_TextureTransform;
39904 50271 : if (!strcmp(node_name, "TimeSensor")) return TAG_MPEG4_TimeSensor;
39905 50831 : if (!strcmp(node_name, "TouchSensor")) return TAG_MPEG4_TouchSensor;
39906 47987 : if (!strcmp(node_name, "Transform")) return TAG_MPEG4_Transform;
39907 56057 : if (!strcmp(node_name, "Transform2D")) return TAG_MPEG4_Transform2D;
39908 38370 : if (!strcmp(node_name, "Valuator")) return TAG_MPEG4_Valuator;
39909 34686 : if (!strcmp(node_name, "Viewpoint")) return TAG_MPEG4_Viewpoint;
39910 34296 : if (!strcmp(node_name, "VisibilitySensor")) return TAG_MPEG4_VisibilitySensor;
39911 34284 : if (!strcmp(node_name, "Viseme")) return TAG_MPEG4_Viseme;
39912 36046 : if (!strcmp(node_name, "WorldInfo")) return TAG_MPEG4_WorldInfo;
39913 32522 : if (!strcmp(node_name, "AcousticMaterial")) return TAG_MPEG4_AcousticMaterial;
39914 32522 : if (!strcmp(node_name, "AcousticScene")) return TAG_MPEG4_AcousticScene;
39915 32522 : if (!strcmp(node_name, "ApplicationWindow")) return TAG_MPEG4_ApplicationWindow;
39916 32522 : if (!strcmp(node_name, "BAP")) return TAG_MPEG4_BAP;
39917 32522 : if (!strcmp(node_name, "BDP")) return TAG_MPEG4_BDP;
39918 32522 : if (!strcmp(node_name, "Body")) return TAG_MPEG4_Body;
39919 32522 : if (!strcmp(node_name, "BodyDefTable")) return TAG_MPEG4_BodyDefTable;
39920 32522 : if (!strcmp(node_name, "BodySegmentConnectionHint")) return TAG_MPEG4_BodySegmentConnectionHint;
39921 32522 : if (!strcmp(node_name, "DirectiveSound")) return TAG_MPEG4_DirectiveSound;
39922 32522 : if (!strcmp(node_name, "Hierarchical3DMesh")) return TAG_MPEG4_Hierarchical3DMesh;
39923 32528 : if (!strcmp(node_name, "MaterialKey")) return TAG_MPEG4_MaterialKey;
39924 32516 : if (!strcmp(node_name, "PerceptualParameters")) return TAG_MPEG4_PerceptualParameters;
39925 32516 : if (!strcmp(node_name, "TemporalTransform")) return TAG_MPEG4_TemporalTransform;
39926 32516 : if (!strcmp(node_name, "TemporalGroup")) return TAG_MPEG4_TemporalGroup;
39927 32516 : if (!strcmp(node_name, "ServerCommand")) return TAG_MPEG4_ServerCommand;
39928 32534 : if (!strcmp(node_name, "InputSensor")) return TAG_MPEG4_InputSensor;
39929 32498 : if (!strcmp(node_name, "MatteTexture")) return TAG_MPEG4_MatteTexture;
39930 32498 : if (!strcmp(node_name, "MediaBuffer")) return TAG_MPEG4_MediaBuffer;
39931 32603 : if (!strcmp(node_name, "MediaControl")) return TAG_MPEG4_MediaControl;
39932 32476 : if (!strcmp(node_name, "MediaSensor")) return TAG_MPEG4_MediaSensor;
39933 32310 : if (!strcmp(node_name, "BitWrapper")) return TAG_MPEG4_BitWrapper;
39934 32310 : if (!strcmp(node_name, "CoordinateInterpolator4D")) return TAG_MPEG4_CoordinateInterpolator4D;
39935 32310 : if (!strcmp(node_name, "DepthImage")) return TAG_MPEG4_DepthImage;
39936 32310 : if (!strcmp(node_name, "FFD")) return TAG_MPEG4_FFD;
39937 32310 : if (!strcmp(node_name, "Implicit")) return TAG_MPEG4_Implicit;
39938 32310 : if (!strcmp(node_name, "XXLFM_Appearance")) return TAG_MPEG4_XXLFM_Appearance;
39939 32310 : if (!strcmp(node_name, "XXLFM_BlendList")) return TAG_MPEG4_XXLFM_BlendList;
39940 32310 : if (!strcmp(node_name, "XXLFM_FrameList")) return TAG_MPEG4_XXLFM_FrameList;
39941 32310 : if (!strcmp(node_name, "XXLFM_LightMap")) return TAG_MPEG4_XXLFM_LightMap;
39942 32310 : if (!strcmp(node_name, "XXLFM_SurfaceMapList")) return TAG_MPEG4_XXLFM_SurfaceMapList;
39943 32310 : if (!strcmp(node_name, "XXLFM_ViewMapList")) return TAG_MPEG4_XXLFM_ViewMapList;
39944 32310 : if (!strcmp(node_name, "MeshGrid")) return TAG_MPEG4_MeshGrid;
39945 32320 : if (!strcmp(node_name, "NonLinearDeformer")) return TAG_MPEG4_NonLinearDeformer;
39946 32300 : if (!strcmp(node_name, "NurbsCurve")) return TAG_MPEG4_NurbsCurve;
39947 32300 : if (!strcmp(node_name, "NurbsCurve2D")) return TAG_MPEG4_NurbsCurve2D;
39948 32300 : if (!strcmp(node_name, "NurbsSurface")) return TAG_MPEG4_NurbsSurface;
39949 32300 : if (!strcmp(node_name, "OctreeImage")) return TAG_MPEG4_OctreeImage;
39950 32300 : if (!strcmp(node_name, "XXParticles")) return TAG_MPEG4_XXParticles;
39951 32300 : if (!strcmp(node_name, "XXParticleInitBox")) return TAG_MPEG4_XXParticleInitBox;
39952 32300 : if (!strcmp(node_name, "XXPlanarObstacle")) return TAG_MPEG4_XXPlanarObstacle;
39953 32300 : if (!strcmp(node_name, "XXPointAttractor")) return TAG_MPEG4_XXPointAttractor;
39954 32300 : if (!strcmp(node_name, "PointTexture")) return TAG_MPEG4_PointTexture;
39955 32306 : if (!strcmp(node_name, "PositionAnimator")) return TAG_MPEG4_PositionAnimator;
39956 32300 : if (!strcmp(node_name, "PositionAnimator2D")) return TAG_MPEG4_PositionAnimator2D;
39957 32288 : if (!strcmp(node_name, "PositionInterpolator4D")) return TAG_MPEG4_PositionInterpolator4D;
39958 32288 : if (!strcmp(node_name, "ProceduralTexture")) return TAG_MPEG4_ProceduralTexture;
39959 32288 : if (!strcmp(node_name, "Quadric")) return TAG_MPEG4_Quadric;
39960 32288 : if (!strcmp(node_name, "SBBone")) return TAG_MPEG4_SBBone;
39961 32288 : if (!strcmp(node_name, "SBMuscle")) return TAG_MPEG4_SBMuscle;
39962 32288 : if (!strcmp(node_name, "SBSegment")) return TAG_MPEG4_SBSegment;
39963 32288 : if (!strcmp(node_name, "SBSite")) return TAG_MPEG4_SBSite;
39964 32288 : if (!strcmp(node_name, "SBSkinnedModel")) return TAG_MPEG4_SBSkinnedModel;
39965 32288 : if (!strcmp(node_name, "SBVCAnimation")) return TAG_MPEG4_SBVCAnimation;
39966 32294 : if (!strcmp(node_name, "ScalarAnimator")) return TAG_MPEG4_ScalarAnimator;
39967 32282 : if (!strcmp(node_name, "SimpleTexture")) return TAG_MPEG4_SimpleTexture;
39968 32282 : if (!strcmp(node_name, "SolidRep")) return TAG_MPEG4_SolidRep;
39969 32282 : if (!strcmp(node_name, "SubdivisionSurface")) return TAG_MPEG4_SubdivisionSurface;
39970 32282 : if (!strcmp(node_name, "SubdivSurfaceSector")) return TAG_MPEG4_SubdivSurfaceSector;
39971 32282 : if (!strcmp(node_name, "WaveletSubdivisionSurface")) return TAG_MPEG4_WaveletSubdivisionSurface;
39972 32294 : if (!strcmp(node_name, "Clipper2D")) return TAG_MPEG4_Clipper2D;
39973 32306 : if (!strcmp(node_name, "ColorTransform")) return TAG_MPEG4_ColorTransform;
39974 32246 : if (!strcmp(node_name, "Ellipse")) return TAG_MPEG4_Ellipse;
39975 32266 : if (!strcmp(node_name, "LinearGradient")) return TAG_MPEG4_LinearGradient;
39976 32190 : if (!strcmp(node_name, "PathLayout")) return TAG_MPEG4_PathLayout;
39977 32214 : if (!strcmp(node_name, "RadialGradient")) return TAG_MPEG4_RadialGradient;
39978 32118 : if (!strcmp(node_name, "SynthesizedTexture")) return TAG_MPEG4_SynthesizedTexture;
39979 32214 : if (!strcmp(node_name, "TransformMatrix2D")) return TAG_MPEG4_TransformMatrix2D;
39980 32128 : if (!strcmp(node_name, "Viewport")) return TAG_MPEG4_Viewport;
39981 31952 : if (!strcmp(node_name, "XCurve2D")) return TAG_MPEG4_XCurve2D;
39982 31880 : if (!strcmp(node_name, "XFontStyle")) return TAG_MPEG4_XFontStyle;
39983 32036 : if (!strcmp(node_name, "XLineProperties")) return TAG_MPEG4_XLineProperties;
39984 31724 : if (!strcmp(node_name, "AdvancedAudioBuffer")) return TAG_MPEG4_AdvancedAudioBuffer;
39985 31724 : if (!strcmp(node_name, "AudioChannelConfig")) return TAG_MPEG4_AudioChannelConfig;
39986 31724 : if (!strcmp(node_name, "DepthImageV2")) return TAG_MPEG4_DepthImageV2;
39987 31724 : if (!strcmp(node_name, "MorphShape")) return TAG_MPEG4_MorphShape;
39988 31724 : if (!strcmp(node_name, "MultiTexture")) return TAG_MPEG4_MultiTexture;
39989 31724 : if (!strcmp(node_name, "PointTextureV2")) return TAG_MPEG4_PointTextureV2;
39990 31724 : if (!strcmp(node_name, "SBVCAnimationV2")) return TAG_MPEG4_SBVCAnimationV2;
39991 31724 : if (!strcmp(node_name, "SimpleTextureV2")) return TAG_MPEG4_SimpleTextureV2;
39992 31724 : if (!strcmp(node_name, "SurroundingSound")) return TAG_MPEG4_SurroundingSound;
39993 31724 : if (!strcmp(node_name, "Transform3DAudio")) return TAG_MPEG4_Transform3DAudio;
39994 31724 : if (!strcmp(node_name, "WideSound")) return TAG_MPEG4_WideSound;
39995 31724 : if (!strcmp(node_name, "ScoreShape")) return TAG_MPEG4_ScoreShape;
39996 31724 : if (!strcmp(node_name, "MusicScore")) return TAG_MPEG4_MusicScore;
39997 31724 : if (!strcmp(node_name, "FootPrintSetNode")) return TAG_MPEG4_FootPrintSetNode;
39998 31724 : if (!strcmp(node_name, "FootPrintNode")) return TAG_MPEG4_FootPrintNode;
39999 31724 : if (!strcmp(node_name, "BuildingPartNode")) return TAG_MPEG4_BuildingPartNode;
40000 31724 : if (!strcmp(node_name, "RoofNode")) return TAG_MPEG4_RoofNode;
40001 31724 : if (!strcmp(node_name, "FacadeNode")) return TAG_MPEG4_FacadeNode;
40002 31724 : if (!strcmp(node_name, "Shadow")) return TAG_MPEG4_Shadow;
40003 31736 : if (!strcmp(node_name, "CacheTexture")) return TAG_MPEG4_CacheTexture;
40004 31730 : if (!strcmp(node_name, "EnvironmentTest")) return TAG_MPEG4_EnvironmentTest;
40005 31754 : if (!strcmp(node_name, "KeyNavigator")) return TAG_MPEG4_KeyNavigator;
40006 31634 : if (!strcmp(node_name, "SpacePartition")) return TAG_MPEG4_SpacePartition;
40007 31640 : if (!strcmp(node_name, "Storage")) return TAG_MPEG4_Storage;
40008 31628 : return 0;
40009 94844 : }
40010 :
40011 : s32 gf_sg_mpeg4_node_get_field_index_by_name(GF_Node *node, char *name)
40012 : {
40013 182340 : switch (node->sgprivate->tag) {
40014 : case TAG_MPEG4_Anchor:
40015 40 : return Anchor_get_field_index_by_name(name);
40016 : case TAG_MPEG4_AnimationStream:
40017 77 : return AnimationStream_get_field_index_by_name(name);
40018 : case TAG_MPEG4_Appearance:
40019 3335 : return Appearance_get_field_index_by_name(name);
40020 : case TAG_MPEG4_AudioBuffer:
40021 36 : return AudioBuffer_get_field_index_by_name(name);
40022 : case TAG_MPEG4_AudioClip:
40023 56 : return AudioClip_get_field_index_by_name(name);
40024 : case TAG_MPEG4_AudioDelay:
40025 0 : return AudioDelay_get_field_index_by_name(name);
40026 : case TAG_MPEG4_AudioFX:
40027 0 : return AudioFX_get_field_index_by_name(name);
40028 : case TAG_MPEG4_AudioMix:
40029 0 : return AudioMix_get_field_index_by_name(name);
40030 : case TAG_MPEG4_AudioSource:
40031 84 : return AudioSource_get_field_index_by_name(name);
40032 : case TAG_MPEG4_AudioSwitch:
40033 0 : return AudioSwitch_get_field_index_by_name(name);
40034 : case TAG_MPEG4_Background:
40035 64 : return Background_get_field_index_by_name(name);
40036 : case TAG_MPEG4_Background2D:
40037 1241 : return Background2D_get_field_index_by_name(name);
40038 : case TAG_MPEG4_Billboard:
40039 22 : return Billboard_get_field_index_by_name(name);
40040 : case TAG_MPEG4_Bitmap:
40041 40 : return Bitmap_get_field_index_by_name(name);
40042 : case TAG_MPEG4_Box:
40043 154 : return Box_get_field_index_by_name(name);
40044 : case TAG_MPEG4_Circle:
40045 442 : return Circle_get_field_index_by_name(name);
40046 : case TAG_MPEG4_Collision:
40047 20 : return Collision_get_field_index_by_name(name);
40048 : case TAG_MPEG4_Color:
40049 32 : return Color_get_field_index_by_name(name);
40050 : case TAG_MPEG4_ColorInterpolator:
40051 96 : return ColorInterpolator_get_field_index_by_name(name);
40052 : case TAG_MPEG4_CompositeTexture2D:
40053 141 : return CompositeTexture2D_get_field_index_by_name(name);
40054 : case TAG_MPEG4_CompositeTexture3D:
40055 24 : return CompositeTexture3D_get_field_index_by_name(name);
40056 : case TAG_MPEG4_Conditional:
40057 3668 : return Conditional_get_field_index_by_name(name);
40058 : case TAG_MPEG4_Cone:
40059 60 : return Cone_get_field_index_by_name(name);
40060 : case TAG_MPEG4_Coordinate:
40061 16 : return Coordinate_get_field_index_by_name(name);
40062 : case TAG_MPEG4_Coordinate2D:
40063 1440 : return Coordinate2D_get_field_index_by_name(name);
40064 : case TAG_MPEG4_CoordinateInterpolator:
40065 0 : return CoordinateInterpolator_get_field_index_by_name(name);
40066 : case TAG_MPEG4_CoordinateInterpolator2D:
40067 32 : return CoordinateInterpolator2D_get_field_index_by_name(name);
40068 : case TAG_MPEG4_Curve2D:
40069 1423 : return Curve2D_get_field_index_by_name(name);
40070 : case TAG_MPEG4_Cylinder:
40071 180 : return Cylinder_get_field_index_by_name(name);
40072 : case TAG_MPEG4_CylinderSensor:
40073 16 : return CylinderSensor_get_field_index_by_name(name);
40074 : case TAG_MPEG4_DirectionalLight:
40075 32 : return DirectionalLight_get_field_index_by_name(name);
40076 : case TAG_MPEG4_DiscSensor:
40077 16 : return DiscSensor_get_field_index_by_name(name);
40078 : case TAG_MPEG4_ElevationGrid:
40079 24 : return ElevationGrid_get_field_index_by_name(name);
40080 : case TAG_MPEG4_Expression:
40081 0 : return Expression_get_field_index_by_name(name);
40082 : case TAG_MPEG4_Extrusion:
40083 26 : return Extrusion_get_field_index_by_name(name);
40084 : case TAG_MPEG4_Face:
40085 0 : return Face_get_field_index_by_name(name);
40086 : case TAG_MPEG4_FaceDefMesh:
40087 0 : return FaceDefMesh_get_field_index_by_name(name);
40088 : case TAG_MPEG4_FaceDefTables:
40089 0 : return FaceDefTables_get_field_index_by_name(name);
40090 : case TAG_MPEG4_FaceDefTransform:
40091 0 : return FaceDefTransform_get_field_index_by_name(name);
40092 : case TAG_MPEG4_FAP:
40093 0 : return FAP_get_field_index_by_name(name);
40094 : case TAG_MPEG4_FDP:
40095 0 : return FDP_get_field_index_by_name(name);
40096 : case TAG_MPEG4_FIT:
40097 0 : return FIT_get_field_index_by_name(name);
40098 : case TAG_MPEG4_Fog:
40099 16 : return Fog_get_field_index_by_name(name);
40100 : case TAG_MPEG4_FontStyle:
40101 3045 : return FontStyle_get_field_index_by_name(name);
40102 : case TAG_MPEG4_Form:
40103 300 : return Form_get_field_index_by_name(name);
40104 : case TAG_MPEG4_Group:
40105 312 : return Group_get_field_index_by_name(name);
40106 : case TAG_MPEG4_ImageTexture:
40107 273 : return ImageTexture_get_field_index_by_name(name);
40108 : case TAG_MPEG4_IndexedFaceSet:
40109 52 : return IndexedFaceSet_get_field_index_by_name(name);
40110 : case TAG_MPEG4_IndexedFaceSet2D:
40111 477 : return IndexedFaceSet2D_get_field_index_by_name(name);
40112 : case TAG_MPEG4_IndexedLineSet:
40113 38 : return IndexedLineSet_get_field_index_by_name(name);
40114 : case TAG_MPEG4_IndexedLineSet2D:
40115 189 : return IndexedLineSet2D_get_field_index_by_name(name);
40116 : case TAG_MPEG4_Inline:
40117 126 : return Inline_get_field_index_by_name(name);
40118 : case TAG_MPEG4_LOD:
40119 10 : return LOD_get_field_index_by_name(name);
40120 : case TAG_MPEG4_Layer2D:
40121 544 : return Layer2D_get_field_index_by_name(name);
40122 : case TAG_MPEG4_Layer3D:
40123 76 : return Layer3D_get_field_index_by_name(name);
40124 : case TAG_MPEG4_Layout:
40125 3262 : return Layout_get_field_index_by_name(name);
40126 : case TAG_MPEG4_LineProperties:
40127 271 : return LineProperties_get_field_index_by_name(name);
40128 : case TAG_MPEG4_ListeningPoint:
40129 0 : return ListeningPoint_get_field_index_by_name(name);
40130 : case TAG_MPEG4_Material:
40131 380 : return Material_get_field_index_by_name(name);
40132 : case TAG_MPEG4_Material2D:
40133 4604 : return Material2D_get_field_index_by_name(name);
40134 : case TAG_MPEG4_MovieTexture:
40135 306 : return MovieTexture_get_field_index_by_name(name);
40136 : case TAG_MPEG4_NavigationInfo:
40137 72 : return NavigationInfo_get_field_index_by_name(name);
40138 : case TAG_MPEG4_Normal:
40139 0 : return Normal_get_field_index_by_name(name);
40140 : case TAG_MPEG4_NormalInterpolator:
40141 0 : return NormalInterpolator_get_field_index_by_name(name);
40142 : case TAG_MPEG4_OrderedGroup:
40143 1043 : return OrderedGroup_get_field_index_by_name(name);
40144 : case TAG_MPEG4_OrientationInterpolator:
40145 260 : return OrientationInterpolator_get_field_index_by_name(name);
40146 : case TAG_MPEG4_PixelTexture:
40147 16 : return PixelTexture_get_field_index_by_name(name);
40148 : case TAG_MPEG4_PlaneSensor:
40149 28 : return PlaneSensor_get_field_index_by_name(name);
40150 : case TAG_MPEG4_PlaneSensor2D:
40151 210 : return PlaneSensor2D_get_field_index_by_name(name);
40152 : case TAG_MPEG4_PointLight:
40153 16 : return PointLight_get_field_index_by_name(name);
40154 : case TAG_MPEG4_PointSet:
40155 4 : return PointSet_get_field_index_by_name(name);
40156 : case TAG_MPEG4_PointSet2D:
40157 21 : return PointSet2D_get_field_index_by_name(name);
40158 : case TAG_MPEG4_PositionInterpolator:
40159 176 : return PositionInterpolator_get_field_index_by_name(name);
40160 : case TAG_MPEG4_PositionInterpolator2D:
40161 532 : return PositionInterpolator2D_get_field_index_by_name(name);
40162 : case TAG_MPEG4_ProximitySensor2D:
40163 24 : return ProximitySensor2D_get_field_index_by_name(name);
40164 : case TAG_MPEG4_ProximitySensor:
40165 14 : return ProximitySensor_get_field_index_by_name(name);
40166 : case TAG_MPEG4_QuantizationParameter:
40167 136 : return QuantizationParameter_get_field_index_by_name(name);
40168 : case TAG_MPEG4_Rectangle:
40169 989 : return Rectangle_get_field_index_by_name(name);
40170 : case TAG_MPEG4_ScalarInterpolator:
40171 708 : return ScalarInterpolator_get_field_index_by_name(name);
40172 : case TAG_MPEG4_Script:
40173 0 : return Script_get_field_index_by_name(name);
40174 : case TAG_MPEG4_Shape:
40175 12425 : return Shape_get_field_index_by_name(name);
40176 : case TAG_MPEG4_Sound:
40177 22 : return Sound_get_field_index_by_name(name);
40178 : case TAG_MPEG4_Sound2D:
40179 45 : return Sound2D_get_field_index_by_name(name);
40180 : case TAG_MPEG4_Sphere:
40181 42 : return Sphere_get_field_index_by_name(name);
40182 : case TAG_MPEG4_SphereSensor:
40183 16 : return SphereSensor_get_field_index_by_name(name);
40184 : case TAG_MPEG4_SpotLight:
40185 14 : return SpotLight_get_field_index_by_name(name);
40186 : case TAG_MPEG4_Switch:
40187 257 : return Switch_get_field_index_by_name(name);
40188 : case TAG_MPEG4_TermCap:
40189 0 : return TermCap_get_field_index_by_name(name);
40190 : case TAG_MPEG4_Text:
40191 5833 : return Text_get_field_index_by_name(name);
40192 : case TAG_MPEG4_TextureCoordinate:
40193 0 : return TextureCoordinate_get_field_index_by_name(name);
40194 : case TAG_MPEG4_TextureTransform:
40195 80 : return TextureTransform_get_field_index_by_name(name);
40196 : case TAG_MPEG4_TimeSensor:
40197 1704 : return TimeSensor_get_field_index_by_name(name);
40198 : case TAG_MPEG4_TouchSensor:
40199 2160 : return TouchSensor_get_field_index_by_name(name);
40200 : case TAG_MPEG4_Transform:
40201 1146 : return Transform_get_field_index_by_name(name);
40202 : case TAG_MPEG4_Transform2D:
40203 28526 : return Transform2D_get_field_index_by_name(name);
40204 : case TAG_MPEG4_Valuator:
40205 2771 : return Valuator_get_field_index_by_name(name);
40206 : case TAG_MPEG4_Viewpoint:
40207 220 : return Viewpoint_get_field_index_by_name(name);
40208 : case TAG_MPEG4_VisibilitySensor:
40209 14 : return VisibilitySensor_get_field_index_by_name(name);
40210 : case TAG_MPEG4_Viseme:
40211 0 : return Viseme_get_field_index_by_name(name);
40212 : case TAG_MPEG4_WorldInfo:
40213 2356 : return WorldInfo_get_field_index_by_name(name);
40214 : case TAG_MPEG4_AcousticMaterial:
40215 0 : return AcousticMaterial_get_field_index_by_name(name);
40216 : case TAG_MPEG4_AcousticScene:
40217 0 : return AcousticScene_get_field_index_by_name(name);
40218 : case TAG_MPEG4_ApplicationWindow:
40219 0 : return ApplicationWindow_get_field_index_by_name(name);
40220 : case TAG_MPEG4_BAP:
40221 0 : return BAP_get_field_index_by_name(name);
40222 : case TAG_MPEG4_BDP:
40223 0 : return BDP_get_field_index_by_name(name);
40224 : case TAG_MPEG4_Body:
40225 0 : return Body_get_field_index_by_name(name);
40226 : case TAG_MPEG4_BodyDefTable:
40227 0 : return BodyDefTable_get_field_index_by_name(name);
40228 : case TAG_MPEG4_BodySegmentConnectionHint:
40229 0 : return BodySegmentConnectionHint_get_field_index_by_name(name);
40230 : case TAG_MPEG4_DirectiveSound:
40231 0 : return DirectiveSound_get_field_index_by_name(name);
40232 : case TAG_MPEG4_Hierarchical3DMesh:
40233 0 : return Hierarchical3DMesh_get_field_index_by_name(name);
40234 : case TAG_MPEG4_MaterialKey:
40235 16 : return MaterialKey_get_field_index_by_name(name);
40236 : case TAG_MPEG4_PerceptualParameters:
40237 0 : return PerceptualParameters_get_field_index_by_name(name);
40238 : case TAG_MPEG4_TemporalTransform:
40239 0 : return TemporalTransform_get_field_index_by_name(name);
40240 : case TAG_MPEG4_TemporalGroup:
40241 0 : return TemporalGroup_get_field_index_by_name(name);
40242 : case TAG_MPEG4_ServerCommand:
40243 0 : return ServerCommand_get_field_index_by_name(name);
40244 : case TAG_MPEG4_InputSensor:
40245 24 : return InputSensor_get_field_index_by_name(name);
40246 : case TAG_MPEG4_MatteTexture:
40247 0 : return MatteTexture_get_field_index_by_name(name);
40248 : case TAG_MPEG4_MediaBuffer:
40249 0 : return MediaBuffer_get_field_index_by_name(name);
40250 : case TAG_MPEG4_MediaControl:
40251 213 : return MediaControl_get_field_index_by_name(name);
40252 : case TAG_MPEG4_MediaSensor:
40253 163 : return MediaSensor_get_field_index_by_name(name);
40254 : case TAG_MPEG4_BitWrapper:
40255 0 : return BitWrapper_get_field_index_by_name(name);
40256 : case TAG_MPEG4_CoordinateInterpolator4D:
40257 0 : return CoordinateInterpolator4D_get_field_index_by_name(name);
40258 : case TAG_MPEG4_DepthImage:
40259 0 : return DepthImage_get_field_index_by_name(name);
40260 : case TAG_MPEG4_FFD:
40261 0 : return FFD_get_field_index_by_name(name);
40262 : case TAG_MPEG4_Implicit:
40263 0 : return Implicit_get_field_index_by_name(name);
40264 : case TAG_MPEG4_XXLFM_Appearance:
40265 0 : return XXLFM_Appearance_get_field_index_by_name(name);
40266 : case TAG_MPEG4_XXLFM_BlendList:
40267 0 : return XXLFM_BlendList_get_field_index_by_name(name);
40268 : case TAG_MPEG4_XXLFM_FrameList:
40269 0 : return XXLFM_FrameList_get_field_index_by_name(name);
40270 : case TAG_MPEG4_XXLFM_LightMap:
40271 0 : return XXLFM_LightMap_get_field_index_by_name(name);
40272 : case TAG_MPEG4_XXLFM_SurfaceMapList:
40273 0 : return XXLFM_SurfaceMapList_get_field_index_by_name(name);
40274 : case TAG_MPEG4_XXLFM_ViewMapList:
40275 0 : return XXLFM_ViewMapList_get_field_index_by_name(name);
40276 : case TAG_MPEG4_MeshGrid:
40277 0 : return MeshGrid_get_field_index_by_name(name);
40278 : case TAG_MPEG4_NonLinearDeformer:
40279 22 : return NonLinearDeformer_get_field_index_by_name(name);
40280 : case TAG_MPEG4_NurbsCurve:
40281 0 : return NurbsCurve_get_field_index_by_name(name);
40282 : case TAG_MPEG4_NurbsCurve2D:
40283 0 : return NurbsCurve2D_get_field_index_by_name(name);
40284 : case TAG_MPEG4_NurbsSurface:
40285 0 : return NurbsSurface_get_field_index_by_name(name);
40286 : case TAG_MPEG4_OctreeImage:
40287 0 : return OctreeImage_get_field_index_by_name(name);
40288 : case TAG_MPEG4_XXParticles:
40289 0 : return XXParticles_get_field_index_by_name(name);
40290 : case TAG_MPEG4_XXParticleInitBox:
40291 0 : return XXParticleInitBox_get_field_index_by_name(name);
40292 : case TAG_MPEG4_XXPlanarObstacle:
40293 0 : return XXPlanarObstacle_get_field_index_by_name(name);
40294 : case TAG_MPEG4_XXPointAttractor:
40295 0 : return XXPointAttractor_get_field_index_by_name(name);
40296 : case TAG_MPEG4_PointTexture:
40297 0 : return PointTexture_get_field_index_by_name(name);
40298 : case TAG_MPEG4_PositionAnimator:
40299 28 : return PositionAnimator_get_field_index_by_name(name);
40300 : case TAG_MPEG4_PositionAnimator2D:
40301 28 : return PositionAnimator2D_get_field_index_by_name(name);
40302 : case TAG_MPEG4_PositionInterpolator4D:
40303 0 : return PositionInterpolator4D_get_field_index_by_name(name);
40304 : case TAG_MPEG4_ProceduralTexture:
40305 0 : return ProceduralTexture_get_field_index_by_name(name);
40306 : case TAG_MPEG4_Quadric:
40307 0 : return Quadric_get_field_index_by_name(name);
40308 : case TAG_MPEG4_SBBone:
40309 0 : return SBBone_get_field_index_by_name(name);
40310 : case TAG_MPEG4_SBMuscle:
40311 0 : return SBMuscle_get_field_index_by_name(name);
40312 : case TAG_MPEG4_SBSegment:
40313 0 : return SBSegment_get_field_index_by_name(name);
40314 : case TAG_MPEG4_SBSite:
40315 0 : return SBSite_get_field_index_by_name(name);
40316 : case TAG_MPEG4_SBSkinnedModel:
40317 0 : return SBSkinnedModel_get_field_index_by_name(name);
40318 : case TAG_MPEG4_SBVCAnimation:
40319 0 : return SBVCAnimation_get_field_index_by_name(name);
40320 : case TAG_MPEG4_ScalarAnimator:
40321 24 : return ScalarAnimator_get_field_index_by_name(name);
40322 : case TAG_MPEG4_SimpleTexture:
40323 0 : return SimpleTexture_get_field_index_by_name(name);
40324 : case TAG_MPEG4_SolidRep:
40325 0 : return SolidRep_get_field_index_by_name(name);
40326 : case TAG_MPEG4_SubdivisionSurface:
40327 0 : return SubdivisionSurface_get_field_index_by_name(name);
40328 : case TAG_MPEG4_SubdivSurfaceSector:
40329 0 : return SubdivSurfaceSector_get_field_index_by_name(name);
40330 : case TAG_MPEG4_WaveletSubdivisionSurface:
40331 0 : return WaveletSubdivisionSurface_get_field_index_by_name(name);
40332 : case TAG_MPEG4_Clipper2D:
40333 56 : return Clipper2D_get_field_index_by_name(name);
40334 : case TAG_MPEG4_ColorTransform:
40335 144 : return ColorTransform_get_field_index_by_name(name);
40336 : case TAG_MPEG4_Ellipse:
40337 8 : return Ellipse_get_field_index_by_name(name);
40338 : case TAG_MPEG4_LinearGradient:
40339 180 : return LinearGradient_get_field_index_by_name(name);
40340 : case TAG_MPEG4_PathLayout:
40341 72 : return PathLayout_get_field_index_by_name(name);
40342 : case TAG_MPEG4_RadialGradient:
40343 174 : return RadialGradient_get_field_index_by_name(name);
40344 : case TAG_MPEG4_SynthesizedTexture:
40345 0 : return SynthesizedTexture_get_field_index_by_name(name);
40346 : case TAG_MPEG4_TransformMatrix2D:
40347 212 : return TransformMatrix2D_get_field_index_by_name(name);
40348 : case TAG_MPEG4_Viewport:
40349 252 : return Viewport_get_field_index_by_name(name);
40350 : case TAG_MPEG4_XCurve2D:
40351 48 : return XCurve2D_get_field_index_by_name(name);
40352 : case TAG_MPEG4_XFontStyle:
40353 0 : return XFontStyle_get_field_index_by_name(name);
40354 : case TAG_MPEG4_XLineProperties:
40355 356 : return XLineProperties_get_field_index_by_name(name);
40356 : case TAG_MPEG4_AdvancedAudioBuffer:
40357 0 : return AdvancedAudioBuffer_get_field_index_by_name(name);
40358 : case TAG_MPEG4_AudioChannelConfig:
40359 0 : return AudioChannelConfig_get_field_index_by_name(name);
40360 : case TAG_MPEG4_DepthImageV2:
40361 0 : return DepthImageV2_get_field_index_by_name(name);
40362 : case TAG_MPEG4_MorphShape:
40363 0 : return MorphShape_get_field_index_by_name(name);
40364 : case TAG_MPEG4_MultiTexture:
40365 0 : return MultiTexture_get_field_index_by_name(name);
40366 : case TAG_MPEG4_PointTextureV2:
40367 0 : return PointTextureV2_get_field_index_by_name(name);
40368 : case TAG_MPEG4_SBVCAnimationV2:
40369 0 : return SBVCAnimationV2_get_field_index_by_name(name);
40370 : case TAG_MPEG4_SimpleTextureV2:
40371 0 : return SimpleTextureV2_get_field_index_by_name(name);
40372 : case TAG_MPEG4_SurroundingSound:
40373 0 : return SurroundingSound_get_field_index_by_name(name);
40374 : case TAG_MPEG4_Transform3DAudio:
40375 0 : return Transform3DAudio_get_field_index_by_name(name);
40376 : case TAG_MPEG4_WideSound:
40377 0 : return WideSound_get_field_index_by_name(name);
40378 : case TAG_MPEG4_ScoreShape:
40379 0 : return ScoreShape_get_field_index_by_name(name);
40380 : case TAG_MPEG4_MusicScore:
40381 0 : return MusicScore_get_field_index_by_name(name);
40382 : case TAG_MPEG4_FootPrintSetNode:
40383 0 : return FootPrintSetNode_get_field_index_by_name(name);
40384 : case TAG_MPEG4_FootPrintNode:
40385 0 : return FootPrintNode_get_field_index_by_name(name);
40386 : case TAG_MPEG4_BuildingPartNode:
40387 0 : return BuildingPartNode_get_field_index_by_name(name);
40388 : case TAG_MPEG4_RoofNode:
40389 0 : return RoofNode_get_field_index_by_name(name);
40390 : case TAG_MPEG4_FacadeNode:
40391 0 : return FacadeNode_get_field_index_by_name(name);
40392 : case TAG_MPEG4_Shadow:
40393 0 : return Shadow_get_field_index_by_name(name);
40394 : case TAG_MPEG4_CacheTexture:
40395 24 : return CacheTexture_get_field_index_by_name(name);
40396 : case TAG_MPEG4_EnvironmentTest:
40397 24 : return EnvironmentTest_get_field_index_by_name(name);
40398 : case TAG_MPEG4_KeyNavigator:
40399 88 : return KeyNavigator_get_field_index_by_name(name);
40400 : case TAG_MPEG4_SpacePartition:
40401 0 : return SpacePartition_get_field_index_by_name(name);
40402 : case TAG_MPEG4_Storage:
40403 16 : return Storage_get_field_index_by_name(name);
40404 : default:
40405 0 : return -1;
40406 : }
40407 91170 : }
40408 :
40409 :
40410 : #endif /*GPAC_DISABLE_VRML*/
|